No OneTemporary

File Metadata

Created
Thu, May 23, 9:07 PM
This file is larger than 256 KB, so syntax highlighting was skipped.
diff --git a/static/reports/cppcheck/master/0.html b/static/reports/cppcheck/master/0.html
index 142267c08..0b6fb53ef 100644
--- a/static/reports/cppcheck/master/0.html
+++ b/static/reports/cppcheck/master/0.html
@@ -1,2327 +1,2327 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/dplugins/generic/metadata/geolocationedit/dialog/geolocationedit.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/dplugins/generic/metadata/geolocationedit/dialog/geolocationedit.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> geolocationedit.cpp</p>
<a href='0.html#line-646'> shadowVar 646</a><a href='0.html#line-712'> shadowVar 712</a><a href='0.html#line-726'> shadowVar 726</a><a href='0.html#line-731'> shadowVar 731</a>
</div>
<div id="content">
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
<a name="line-6"></a><span class="cm"> * Date : 2006-05-16</span>
<a name="line-7"></a><span class="cm"> * Description : A tool to edit geolocation</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2006-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&gt;</span>
<a name="line-10"></a><span class="cm"> * Copyright (C) 2010-2014 by Michael G. Hansen &lt;mike at mghansen dot de&gt;</span>
<a name="line-11"></a><span class="cm"> * Copyright (C) 2010 by Gabriel Voicu &lt;ping dot gabi at gmail dot com&gt;</span>
<a name="line-12"></a><span class="cm"> * Copyright (C) 2014 by Justus Schwartz &lt;justus at gmx dot li&gt;</span>
<a name="line-13"></a><span class="cm"> *</span>
<a name="line-14"></a><span class="cm"> * This program is free software; you can redistribute it</span>
<a name="line-15"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
<a name="line-16"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
<a name="line-17"></a><span class="cm"> * either version 2, or (at your option)</span>
<a name="line-18"></a><span class="cm"> * any later version.</span>
<a name="line-19"></a><span class="cm"> *</span>
<a name="line-20"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
<a name="line-21"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="line-22"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
<a name="line-23"></a><span class="cm"> * GNU General Public License for more details.</span>
<a name="line-24"></a><span class="cm"> *</span>
<a name="line-25"></a><span class="cm"> * ============================================================ */</span>
<a name="line-26"></a>
<a name="line-27"></a><span class="cp">#include</span> <span class="cpf">&quot;geolocationedit.h&quot;</span><span class="cp"></span>
<a name="line-28"></a>
<a name="line-29"></a><span class="c1">// Qt includes</span>
<a name="line-30"></a>
<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QtConcurrentMap&gt;</span><span class="cp"></span>
<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QButtonGroup&gt;</span><span class="cp"></span>
<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QCheckBox&gt;</span><span class="cp"></span>
<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QCloseEvent&gt;</span><span class="cp"></span>
<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QFuture&gt;</span><span class="cp"></span>
<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QFutureWatcher&gt;</span><span class="cp"></span>
<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&lt;QGroupBox&gt;</span><span class="cp"></span>
<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&lt;QHBoxLayout&gt;</span><span class="cp"></span>
<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&lt;QHeaderView&gt;</span><span class="cp"></span>
<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&lt;QLabel&gt;</span><span class="cp"></span>
<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&lt;QPushButton&gt;</span><span class="cp"></span>
<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&lt;QGridLayout&gt;</span><span class="cp"></span>
<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&lt;QPointer&gt;</span><span class="cp"></span>
<a name="line-44"></a><span class="cp">#include</span> <span class="cpf">&lt;QRadioButton&gt;</span><span class="cp"></span>
<a name="line-45"></a><span class="cp">#include</span> <span class="cpf">&lt;QSplitter&gt;</span><span class="cp"></span>
<a name="line-46"></a><span class="cp">#include</span> <span class="cpf">&lt;QStackedLayout&gt;</span><span class="cp"></span>
<a name="line-47"></a><span class="cp">#include</span> <span class="cpf">&lt;QStackedWidget&gt;</span><span class="cp"></span>
<a name="line-48"></a><span class="cp">#include</span> <span class="cpf">&lt;QTimer&gt;</span><span class="cp"></span>
<a name="line-49"></a><span class="cp">#include</span> <span class="cpf">&lt;QToolButton&gt;</span><span class="cp"></span>
<a name="line-50"></a><span class="cp">#include</span> <span class="cpf">&lt;QTreeView&gt;</span><span class="cp"></span>
<a name="line-51"></a><span class="cp">#include</span> <span class="cpf">&lt;QMenu&gt;</span><span class="cp"></span>
<a name="line-52"></a><span class="cp">#include</span> <span class="cpf">&lt;QUndoView&gt;</span><span class="cp"></span>
<a name="line-53"></a><span class="cp">#include</span> <span class="cpf">&lt;QAction&gt;</span><span class="cp"></span>
<a name="line-54"></a><span class="cp">#include</span> <span class="cpf">&lt;QApplication&gt;</span><span class="cp"></span>
<a name="line-55"></a><span class="cp">#include</span> <span class="cpf">&lt;QComboBox&gt;</span><span class="cp"></span>
<a name="line-56"></a><span class="cp">#include</span> <span class="cpf">&lt;QDialogButtonBox&gt;</span><span class="cp"></span>
<a name="line-57"></a>
<a name="line-58"></a><span class="c1">// KDE includes</span>
<a name="line-59"></a>
<a name="line-60"></a><span class="cp">#include</span> <span class="cpf">&lt;kconfiggroup.h&gt;</span><span class="cp"></span>
<a name="line-61"></a><span class="cp">#include</span> <span class="cpf">&lt;ksharedconfig.h&gt;</span><span class="cp"></span>
<a name="line-62"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
<a name="line-63"></a>
<a name="line-64"></a><span class="c1">// Local includes</span>
<a name="line-65"></a>
<a name="line-66"></a><span class="cp">#include</span> <span class="cpf">&quot;dlayoutbox.h&quot;</span><span class="cp"></span>
<a name="line-67"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_config.h&quot;</span><span class="cp"></span>
<a name="line-68"></a><span class="cp">#include</span> <span class="cpf">&quot;itemmarkertiler.h&quot;</span><span class="cp"></span>
<a name="line-69"></a><span class="cp">#include</span> <span class="cpf">&quot;trackmanager.h&quot;</span><span class="cp"></span>
<a name="line-70"></a><span class="cp">#include</span> <span class="cpf">&quot;gpscommon.h&quot;</span><span class="cp"></span>
<a name="line-71"></a><span class="cp">#include</span> <span class="cpf">&quot;gpsitemmodel.h&quot;</span><span class="cp"></span>
<a name="line-72"></a><span class="cp">#include</span> <span class="cpf">&quot;mapdragdrophandler.h&quot;</span><span class="cp"></span>
<a name="line-73"></a><span class="cp">#include</span> <span class="cpf">&quot;gpsitemlist.h&quot;</span><span class="cp"></span>
<a name="line-74"></a><span class="cp">#include</span> <span class="cpf">&quot;gpsitemlistdragdrophandler.h&quot;</span><span class="cp"></span>
<a name="line-75"></a><span class="cp">#include</span> <span class="cpf">&quot;gpsitemlistcontextmenu.h&quot;</span><span class="cp"></span>
<a name="line-76"></a><span class="cp">#include</span> <span class="cpf">&quot;gpscorrelatorwidget.h&quot;</span><span class="cp"></span>
<a name="line-77"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
<a name="line-78"></a><span class="cp">#include</span> <span class="cpf">&quot;dmessagebox.h&quot;</span><span class="cp"></span>
<a name="line-79"></a><span class="cp">#include</span> <span class="cpf">&quot;rgwidget.h&quot;</span><span class="cp"></span>
<a name="line-80"></a><span class="cp">#include</span> <span class="cpf">&quot;kmlwidget.h&quot;</span><span class="cp"></span>
<a name="line-81"></a><span class="cp">#include</span> <span class="cpf">&quot;statusprogressbar.h&quot;</span><span class="cp"></span>
<a name="line-82"></a><span class="cp">#include</span> <span class="cpf">&quot;searchwidget.h&quot;</span><span class="cp"></span>
<a name="line-83"></a><span class="cp">#include</span> <span class="cpf">&quot;backend-rg.h&quot;</span><span class="cp"></span>
<a name="line-84"></a><span class="cp">#include</span> <span class="cpf">&quot;gpsitemdetails.h&quot;</span><span class="cp"></span>
<a name="line-85"></a><span class="cp">#include</span> <span class="cpf">&quot;gpsgeoifacemodelhelper.h&quot;</span><span class="cp"></span>
<a name="line-86"></a><span class="cp">#include</span> <span class="cpf">&quot;dxmlguiwindow.h&quot;</span><span class="cp"></span>
<a name="line-87"></a><span class="cp">#include</span> <span class="cpf">&quot;gpsbookmarkowner.h&quot;</span><span class="cp"></span>
<a name="line-88"></a><span class="cp">#include</span> <span class="cpf">&quot;gpsbookmarkmodelhelper.h&quot;</span><span class="cp"></span>
<a name="line-89"></a>
<a name="line-90"></a><span class="cp">#ifdef GPSSYNC_MODELTEST</span>
<a name="line-91"></a><span class="cp"># include &lt;modeltest.h&gt;</span>
<a name="line-92"></a><span class="cp">#endif</span>
<a name="line-93"></a>
<a name="line-94"></a><span class="k">using</span> <span class="k">namespace</span> <span class="n">Digikam</span><span class="p">;</span>
<a name="line-95"></a>
<a name="line-96"></a><span class="k">namespace</span> <span class="n">DigikamGenericGeolocationEditPlugin</span>
<a name="line-97"></a><span class="p">{</span>
<a name="line-98"></a>
<a name="line-99"></a><span class="k">struct</span> <span class="n">SaveChangedImagesHelper</span>
<a name="line-100"></a><span class="p">{</span>
<a name="line-101"></a><span class="k">public</span><span class="o">:</span>
<a name="line-102"></a>
<a name="line-103"></a> <span class="k">explicit</span> <span class="n">SaveChangedImagesHelper</span><span class="p">(</span><span class="n">GPSItemModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">model</span><span class="p">)</span>
<a name="line-104"></a> <span class="o">:</span> <span class="n">imageModel</span><span class="p">(</span><span class="n">model</span><span class="p">)</span>
<a name="line-105"></a> <span class="p">{</span>
<a name="line-106"></a> <span class="p">}</span>
<a name="line-107"></a>
<a name="line-108"></a> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="k">operator</span><span class="p">()(</span><span class="k">const</span> <span class="n">QPersistentModelIndex</span><span class="o">&amp;</span> <span class="n">itemIndex</span><span class="p">)</span>
<a name="line-109"></a> <span class="p">{</span>
<a name="line-110"></a> <span class="n">GPSItemContainer</span><span class="o">*</span> <span class="k">const</span> <span class="n">item</span> <span class="o">=</span> <span class="n">imageModel</span><span class="o">-&gt;</span><span class="n">itemFromIndex</span><span class="p">(</span><span class="n">itemIndex</span><span class="p">);</span>
<a name="line-111"></a>
<a name="line-112"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">item</span><span class="p">)</span>
<a name="line-113"></a> <span class="k">return</span> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span><span class="p">(</span><span class="n">QUrl</span><span class="p">(),</span> <span class="n">QString</span><span class="p">());</span>
<a name="line-114"></a>
<a name="line-115"></a> <span class="k">return</span> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span><span class="p">(</span><span class="n">item</span><span class="o">-&gt;</span><span class="n">url</span><span class="p">(),</span> <span class="n">item</span><span class="o">-&gt;</span><span class="n">saveChanges</span><span class="p">());</span>
<a name="line-116"></a> <span class="p">}</span>
<a name="line-117"></a>
<a name="line-118"></a><span class="k">public</span><span class="o">:</span>
<a name="line-119"></a>
<a name="line-120"></a> <span class="k">typedef</span> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">result_type</span><span class="p">;</span>
<a name="line-121"></a> <span class="n">GPSItemModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">imageModel</span><span class="p">;</span>
<a name="line-122"></a><span class="p">};</span>
<a name="line-123"></a>
<a name="line-124"></a><span class="c1">// ---------------------------------------------------------------------------------</span>
<a name="line-125"></a>
<a name="line-126"></a><span class="k">struct</span> <span class="n">LoadFileMetadataHelper</span>
<a name="line-127"></a><span class="p">{</span>
<a name="line-128"></a><span class="k">public</span><span class="o">:</span>
<a name="line-129"></a>
<a name="line-130"></a> <span class="k">explicit</span> <span class="n">LoadFileMetadataHelper</span><span class="p">(</span><span class="n">GPSItemModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">model</span><span class="p">)</span>
<a name="line-131"></a> <span class="o">:</span> <span class="n">imageModel</span><span class="p">(</span><span class="n">model</span><span class="p">)</span>
<a name="line-132"></a> <span class="p">{</span>
<a name="line-133"></a> <span class="p">}</span>
<a name="line-134"></a>
<a name="line-135"></a> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="k">operator</span><span class="p">()(</span><span class="k">const</span> <span class="n">QPersistentModelIndex</span><span class="o">&amp;</span> <span class="n">itemIndex</span><span class="p">)</span>
<a name="line-136"></a> <span class="p">{</span>
<a name="line-137"></a> <span class="n">GPSItemContainer</span><span class="o">*</span> <span class="k">const</span> <span class="n">item</span> <span class="o">=</span> <span class="n">imageModel</span><span class="o">-&gt;</span><span class="n">itemFromIndex</span><span class="p">(</span><span class="n">itemIndex</span><span class="p">);</span>
<a name="line-138"></a>
<a name="line-139"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">item</span><span class="p">)</span>
<a name="line-140"></a> <span class="k">return</span> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span><span class="p">(</span><span class="n">QUrl</span><span class="p">(),</span> <span class="n">QString</span><span class="p">());</span>
<a name="line-141"></a>
<a name="line-142"></a> <span class="n">item</span><span class="o">-&gt;</span><span class="n">loadImageData</span><span class="p">();</span>
<a name="line-143"></a>
<a name="line-144"></a> <span class="k">return</span> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span><span class="p">(</span><span class="n">item</span><span class="o">-&gt;</span><span class="n">url</span><span class="p">(),</span> <span class="n">QString</span><span class="p">());</span>
<a name="line-145"></a> <span class="p">}</span>
<a name="line-146"></a>
<a name="line-147"></a><span class="k">public</span><span class="o">:</span>
<a name="line-148"></a>
<a name="line-149"></a> <span class="k">typedef</span> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">result_type</span><span class="p">;</span>
<a name="line-150"></a> <span class="n">GPSItemModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">imageModel</span><span class="p">;</span>
<a name="line-151"></a><span class="p">};</span>
<a name="line-152"></a>
<a name="line-153"></a><span class="c1">// ---------------------------------------------------------------------------------</span>
<a name="line-154"></a>
<a name="line-155"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">Private</span>
<a name="line-156"></a><span class="p">{</span>
<a name="line-157"></a><span class="k">public</span><span class="o">:</span>
<a name="line-158"></a>
<a name="line-159"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
<a name="line-160"></a> <span class="p">{</span>
<a name="line-161"></a> <span class="n">imageModel</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-162"></a> <span class="n">selectionModel</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-163"></a> <span class="n">uiEnabled</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-164"></a> <span class="n">listViewContextMenu</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-165"></a> <span class="n">trackManager</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-166"></a> <span class="n">fileIOFutureWatcher</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-167"></a> <span class="n">fileIOCountDone</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-168"></a> <span class="n">fileIOCountTotal</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-169"></a> <span class="n">fileIOCloseAfterSaving</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-170"></a> <span class="n">buttonBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-171"></a> <span class="n">VSplitter</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-172"></a> <span class="n">HSplitter</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-173"></a> <span class="n">treeView</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-174"></a> <span class="n">stackedWidget</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-175"></a> <span class="n">tabBar</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-176"></a> <span class="n">splitterSize</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-177"></a> <span class="n">undoStack</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-178"></a> <span class="n">undoView</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-179"></a> <span class="n">progressBar</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-180"></a> <span class="n">progressCancelButton</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-181"></a> <span class="n">progressCancelObject</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-182"></a> <span class="n">detailsWidget</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-183"></a> <span class="n">correlatorWidget</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-184"></a> <span class="n">rgWidget</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-185"></a> <span class="n">searchWidget</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-186"></a> <span class="n">kmlWidget</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-187"></a> <span class="n">mapSplitter</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-188"></a> <span class="n">mapWidget</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-189"></a> <span class="n">mapWidget2</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-190"></a> <span class="n">mapDragDropHandler</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-191"></a> <span class="n">mapModelHelper</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-192"></a> <span class="n">geoifaceMarkerModel</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-193"></a> <span class="n">sortActionOldestFirst</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-194"></a> <span class="n">sortActionYoungestFirst</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-195"></a> <span class="n">sortMenu</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-196"></a> <span class="n">mapLayout</span> <span class="o">=</span> <span class="n">MapLayoutOne</span><span class="p">;</span>
<a name="line-197"></a> <span class="n">cbMapLayout</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-198"></a> <span class="n">bookmarkOwner</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-199"></a> <span class="n">actionBookmarkVisibility</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-200"></a> <span class="n">iface</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-201"></a> <span class="p">}</span>
<a name="line-202"></a>
<a name="line-203"></a> <span class="c1">// General things</span>
<a name="line-204"></a> <span class="n">GPSItemModel</span><span class="o">*</span> <span class="n">imageModel</span><span class="p">;</span>
<a name="line-205"></a> <span class="n">QItemSelectionModel</span><span class="o">*</span> <span class="n">selectionModel</span><span class="p">;</span>
<a name="line-206"></a> <span class="kt">bool</span> <span class="n">uiEnabled</span><span class="p">;</span>
<a name="line-207"></a> <span class="n">GPSItemListContextMenu</span><span class="o">*</span> <span class="n">listViewContextMenu</span><span class="p">;</span>
<a name="line-208"></a> <span class="n">TrackManager</span><span class="o">*</span> <span class="n">trackManager</span><span class="p">;</span>
<a name="line-209"></a>
<a name="line-210"></a> <span class="c1">// Loading and saving</span>
<a name="line-211"></a> <span class="n">QFuture</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="p">,</span><span class="n">QString</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">fileIOFuture</span><span class="p">;</span>
<a name="line-212"></a> <span class="n">QFutureWatcher</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="p">,</span><span class="n">QString</span><span class="o">&gt;</span> <span class="o">&gt;*</span> <span class="n">fileIOFutureWatcher</span><span class="p">;</span>
<a name="line-213"></a> <span class="kt">int</span> <span class="n">fileIOCountDone</span><span class="p">;</span>
<a name="line-214"></a> <span class="kt">int</span> <span class="n">fileIOCountTotal</span><span class="p">;</span>
<a name="line-215"></a> <span class="kt">bool</span> <span class="n">fileIOCloseAfterSaving</span><span class="p">;</span>
<a name="line-216"></a>
<a name="line-217"></a> <span class="c1">// UI</span>
<a name="line-218"></a> <span class="n">QDialogButtonBox</span><span class="o">*</span> <span class="n">buttonBox</span><span class="p">;</span>
<a name="line-219"></a> <span class="n">QSplitter</span><span class="o">*</span> <span class="n">VSplitter</span><span class="p">;</span>
<a name="line-220"></a> <span class="n">QSplitter</span><span class="o">*</span> <span class="n">HSplitter</span><span class="p">;</span>
<a name="line-221"></a> <span class="n">GPSItemList</span><span class="o">*</span> <span class="n">treeView</span><span class="p">;</span>
<a name="line-222"></a> <span class="n">QStackedWidget</span><span class="o">*</span> <span class="n">stackedWidget</span><span class="p">;</span>
<a name="line-223"></a> <span class="n">QTabBar</span><span class="o">*</span> <span class="n">tabBar</span><span class="p">;</span>
<a name="line-224"></a> <span class="kt">int</span> <span class="n">splitterSize</span><span class="p">;</span>
<a name="line-225"></a> <span class="n">QUndoStack</span><span class="o">*</span> <span class="n">undoStack</span><span class="p">;</span>
<a name="line-226"></a> <span class="n">QUndoView</span><span class="o">*</span> <span class="n">undoView</span><span class="p">;</span>
<a name="line-227"></a>
<a name="line-228"></a> <span class="c1">// UI: progress</span>
<a name="line-229"></a> <span class="n">StatusProgressBar</span><span class="o">*</span> <span class="n">progressBar</span><span class="p">;</span>
<a name="line-230"></a> <span class="n">QPushButton</span><span class="o">*</span> <span class="n">progressCancelButton</span><span class="p">;</span>
<a name="line-231"></a> <span class="n">QObject</span><span class="o">*</span> <span class="n">progressCancelObject</span><span class="p">;</span>
<a name="line-232"></a> <span class="n">QString</span> <span class="n">progressCancelSlot</span><span class="p">;</span>
<a name="line-233"></a>
<a name="line-234"></a> <span class="c1">// UI: tab widgets</span>
<a name="line-235"></a> <span class="n">GPSItemDetails</span><span class="o">*</span> <span class="n">detailsWidget</span><span class="p">;</span>
<a name="line-236"></a> <span class="n">GPSCorrelatorWidget</span><span class="o">*</span> <span class="n">correlatorWidget</span><span class="p">;</span>
<a name="line-237"></a> <span class="n">RGWidget</span><span class="o">*</span> <span class="n">rgWidget</span><span class="p">;</span>
<a name="line-238"></a> <span class="n">SearchWidget</span><span class="o">*</span> <span class="n">searchWidget</span><span class="p">;</span>
<a name="line-239"></a> <span class="n">KmlWidget</span><span class="o">*</span> <span class="n">kmlWidget</span><span class="p">;</span>
<a name="line-240"></a>
<a name="line-241"></a> <span class="c1">// map: UI</span>
<a name="line-242"></a> <span class="n">MapLayout</span> <span class="n">mapLayout</span><span class="p">;</span>
<a name="line-243"></a> <span class="n">QSplitter</span><span class="o">*</span> <span class="n">mapSplitter</span><span class="p">;</span>
<a name="line-244"></a> <span class="n">MapWidget</span><span class="o">*</span> <span class="n">mapWidget</span><span class="p">;</span>
<a name="line-245"></a> <span class="n">MapWidget</span><span class="o">*</span> <span class="n">mapWidget2</span><span class="p">;</span>
<a name="line-246"></a>
<a name="line-247"></a> <span class="c1">// map: helpers</span>
<a name="line-248"></a> <span class="n">MapDragDropHandler</span><span class="o">*</span> <span class="n">mapDragDropHandler</span><span class="p">;</span>
<a name="line-249"></a> <span class="n">GPSGeoIfaceModelHelper</span><span class="o">*</span> <span class="n">mapModelHelper</span><span class="p">;</span>
<a name="line-250"></a> <span class="n">ItemMarkerTiler</span><span class="o">*</span> <span class="n">geoifaceMarkerModel</span><span class="p">;</span>
<a name="line-251"></a>
<a name="line-252"></a> <span class="c1">// map: actions</span>
<a name="line-253"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">sortActionOldestFirst</span><span class="p">;</span>
<a name="line-254"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">sortActionYoungestFirst</span><span class="p">;</span>
<a name="line-255"></a> <span class="n">QMenu</span><span class="o">*</span> <span class="n">sortMenu</span><span class="p">;</span>
<a name="line-256"></a> <span class="n">QComboBox</span><span class="o">*</span> <span class="n">cbMapLayout</span><span class="p">;</span>
<a name="line-257"></a>
<a name="line-258"></a> <span class="n">GPSBookmarkOwner</span><span class="o">*</span> <span class="n">bookmarkOwner</span><span class="p">;</span>
<a name="line-259"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionBookmarkVisibility</span><span class="p">;</span>
<a name="line-260"></a>
<a name="line-261"></a> <span class="n">DInfoInterface</span><span class="o">*</span> <span class="n">iface</span><span class="p">;</span>
<a name="line-262"></a><span class="p">};</span>
<a name="line-263"></a>
<a name="line-264"></a><span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">GeolocationEdit</span><span class="p">(</span><span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span><span class="p">,</span> <span class="n">DInfoInterface</span><span class="o">*</span> <span class="k">const</span> <span class="n">iface</span><span class="p">)</span>
<a name="line-265"></a> <span class="o">:</span> <span class="n">DPluginDialog</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Geolocation Edit Settings&quot;</span><span class="p">)),</span>
<a name="line-266"></a> <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">Private</span><span class="p">)</span>
<a name="line-267"></a><span class="p">{</span>
<a name="line-268"></a> <span class="n">setAttribute</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">WA_DeleteOnClose</span><span class="p">,</span> <span class="nb">true</span><span class="p">);</span>
<a name="line-269"></a> <span class="n">setWindowTitle</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Geolocation Editor&quot;</span><span class="p">));</span>
<a name="line-270"></a> <span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span> <span class="mi">400</span><span class="p">);</span>
<a name="line-271"></a> <span class="n">setModal</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-272"></a>
<a name="line-273"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span> <span class="o">=</span> <span class="n">iface</span><span class="p">;</span>
<a name="line-274"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">GPSItemModel</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-275"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QItemSelectionModel</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="p">);</span>
<a name="line-276"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">trackManager</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TrackManager</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-277"></a>
<a name="line-278"></a><span class="cp">#ifdef GPSSYNC_MODELTEST</span>
<a name="line-279"></a> <span class="k">new</span> <span class="nf">ModelTest</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
<a name="line-280"></a><span class="cp">#endif</span>
<a name="line-281"></a>
<a name="line-282"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bookmarkOwner</span> <span class="o">=</span> <span class="k">new</span> <span class="n">GPSBookmarkOwner</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
<a name="line-283"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">undoStack</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QUndoStack</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-284"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stackedWidget</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QStackedWidget</span><span class="p">();</span>
<a name="line-285"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">searchWidget</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SearchWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">bookmarkOwner</span><span class="p">,</span>
<a name="line-286"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="p">,</span>
<a name="line-287"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="p">,</span>
<a name="line-288"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stackedWidget</span><span class="p">);</span>
<a name="line-289"></a>
<a name="line-290"></a> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="p">);</span>
<a name="line-291"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapModelHelper</span> <span class="o">=</span> <span class="k">new</span> <span class="n">GPSGeoIfaceModelHelper</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
<a name="line-292"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapModelHelper</span><span class="o">-&gt;</span><span class="n">addUngroupedModelHelper</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">bookmarkOwner</span><span class="o">-&gt;</span><span class="n">bookmarkModelHelper</span><span class="p">());</span>
<a name="line-293"></a>
<a name="line-294"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapModelHelper</span><span class="o">-&gt;</span><span class="n">addUngroupedModelHelper</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">searchWidget</span><span class="o">-&gt;</span><span class="n">getModelHelper</span><span class="p">());</span>
<a name="line-295"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapDragDropHandler</span> <span class="o">=</span> <span class="k">new</span> <span class="n">MapDragDropHandler</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapModelHelper</span><span class="p">);</span>
<a name="line-296"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">geoifaceMarkerModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ItemMarkerTiler</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mapModelHelper</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
<a name="line-297"></a>
<a name="line-298"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionBookmarkVisibility</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-299"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionBookmarkVisibility</span><span class="o">-&gt;</span><span class="n">setIcon</span><span class="p">(</span><span class="n">QIcon</span><span class="o">::</span><span class="n">fromTheme</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;bookmark-new&quot;</span><span class="p">)));</span>
<a name="line-300"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionBookmarkVisibility</span><span class="o">-&gt;</span><span class="n">setToolTip</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Display bookmarked positions on the map.&quot;</span><span class="p">));</span>
<a name="line-301"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionBookmarkVisibility</span><span class="o">-&gt;</span><span class="n">setCheckable</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-302"></a>
<a name="line-303"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionBookmarkVisibility</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">changed</span><span class="p">()),</span>
<a name="line-304"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotBookmarkVisibilityToggled</span><span class="p">()));</span>
<a name="line-305"></a>
<a name="line-306"></a> <span class="n">QVBoxLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">mainLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QVBoxLayout</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-307"></a> <span class="n">setLayout</span><span class="p">(</span><span class="n">mainLayout</span><span class="p">);</span>
<a name="line-308"></a>
<a name="line-309"></a> <span class="n">DHBox</span><span class="o">*</span> <span class="k">const</span> <span class="n">hboxMain</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DHBox</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-310"></a> <span class="n">mainLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">hboxMain</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
<a name="line-311"></a>
<a name="line-312"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">HSplitter</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QSplitter</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">hboxMain</span><span class="p">);</span>
<a name="line-313"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">HSplitter</span><span class="o">-&gt;</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">QSizePolicy</span><span class="o">::</span><span class="n">Expanding</span><span class="p">,</span> <span class="n">QSizePolicy</span><span class="o">::</span><span class="n">Expanding</span><span class="p">);</span>
<a name="line-314"></a>
<a name="line-315"></a> <span class="c1">// ------------------------------------------------------------------------------------------------</span>
<a name="line-316"></a>
<a name="line-317"></a> <span class="n">DHBox</span><span class="o">*</span> <span class="k">const</span> <span class="n">hbox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DHBox</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-318"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">labelMapLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Layout:&quot;</span><span class="p">),</span> <span class="n">hbox</span><span class="p">);</span>
<a name="line-319"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cbMapLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QComboBox</span><span class="p">(</span><span class="n">hbox</span><span class="p">);</span>
<a name="line-320"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cbMapLayout</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;One map&quot;</span><span class="p">),</span> <span class="n">QVariant</span><span class="o">::</span><span class="n">fromValue</span><span class="p">(</span><span class="n">MapLayoutOne</span><span class="p">));</span>
<a name="line-321"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cbMapLayout</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Two maps - horizontal&quot;</span><span class="p">),</span> <span class="n">QVariant</span><span class="o">::</span><span class="n">fromValue</span><span class="p">(</span><span class="n">MapLayoutHorizontal</span><span class="p">));</span>
<a name="line-322"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cbMapLayout</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Two maps - vertical&quot;</span><span class="p">),</span> <span class="n">QVariant</span><span class="o">::</span><span class="n">fromValue</span><span class="p">(</span><span class="n">MapLayoutVertical</span><span class="p">));</span>
<a name="line-323"></a> <span class="n">labelMapLayout</span><span class="o">-&gt;</span><span class="n">setBuddy</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cbMapLayout</span><span class="p">);</span>
<a name="line-324"></a>
<a name="line-325"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressBar</span> <span class="o">=</span> <span class="k">new</span> <span class="n">StatusProgressBar</span><span class="p">(</span><span class="n">hbox</span><span class="p">);</span>
<a name="line-326"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="o">-&gt;</span><span class="n">setVisible</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-327"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="o">-&gt;</span><span class="n">setProgressBarMode</span><span class="p">(</span><span class="n">StatusProgressBar</span><span class="o">::</span><span class="n">ProgressBarMode</span><span class="p">);</span>
<a name="line-328"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="o">-&gt;</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">QSizePolicy</span><span class="o">::</span><span class="n">Expanding</span><span class="p">,</span> <span class="n">QSizePolicy</span><span class="o">::</span><span class="n">Minimum</span><span class="p">);</span>
<a name="line-329"></a>
<a name="line-330"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressCancelButton</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QPushButton</span><span class="p">(</span><span class="n">hbox</span><span class="p">);</span>
<a name="line-331"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressCancelButton</span><span class="o">-&gt;</span><span class="n">setVisible</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-332"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressCancelButton</span><span class="o">-&gt;</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">QSizePolicy</span><span class="o">::</span><span class="n">Minimum</span><span class="p">,</span> <span class="n">QSizePolicy</span><span class="o">::</span><span class="n">Minimum</span><span class="p">);</span>
<a name="line-333"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressCancelButton</span><span class="o">-&gt;</span><span class="n">setIcon</span><span class="p">(</span><span class="n">QIcon</span><span class="o">::</span><span class="n">fromTheme</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;dialog-cancel&quot;</span><span class="p">)));</span>
<a name="line-334"></a>
<a name="line-335"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">progressCancelButton</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">clicked</span><span class="p">()),</span>
<a name="line-336"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotProgressCancelButtonClicked</span><span class="p">()));</span>
<a name="line-337"></a>
<a name="line-338"></a> <span class="n">m_buttons</span><span class="o">-&gt;</span><span class="n">addButton</span><span class="p">(</span><span class="n">QDialogButtonBox</span><span class="o">::</span><span class="n">Apply</span><span class="p">);</span>
<a name="line-339"></a> <span class="n">m_buttons</span><span class="o">-&gt;</span><span class="n">addButton</span><span class="p">(</span><span class="n">QDialogButtonBox</span><span class="o">::</span><span class="n">Close</span><span class="p">);</span>
<a name="line-340"></a> <span class="n">m_buttons</span><span class="o">-&gt;</span><span class="n">setParent</span><span class="p">(</span><span class="n">hbox</span><span class="p">);</span>
<a name="line-341"></a>
<a name="line-342"></a> <span class="n">connect</span><span class="p">(</span><span class="n">m_buttons</span><span class="o">-&gt;</span><span class="n">button</span><span class="p">(</span><span class="n">QDialogButtonBox</span><span class="o">::</span><span class="n">Apply</span><span class="p">),</span> <span class="o">&amp;</span><span class="n">QPushButton</span><span class="o">::</span><span class="n">clicked</span><span class="p">,</span>
<a name="line-343"></a> <span class="k">this</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">slotApplyClicked</span><span class="p">);</span>
<a name="line-344"></a>
<a name="line-345"></a> <span class="n">connect</span><span class="p">(</span><span class="n">m_buttons</span><span class="o">-&gt;</span><span class="n">button</span><span class="p">(</span><span class="n">QDialogButtonBox</span><span class="o">::</span><span class="n">Close</span><span class="p">),</span> <span class="o">&amp;</span><span class="n">QPushButton</span><span class="o">::</span><span class="n">clicked</span><span class="p">,</span>
<a name="line-346"></a> <span class="k">this</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">close</span><span class="p">);</span>
<a name="line-347"></a>
<a name="line-348"></a> <span class="n">mainLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">hbox</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-349"></a>
<a name="line-350"></a> <span class="c1">// ------------------------------------------------------------------------------------------------</span>
<a name="line-351"></a>
<a name="line-352"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">VSplitter</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QSplitter</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">Vertical</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">HSplitter</span><span class="p">);</span>
<a name="line-353"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">HSplitter</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">VSplitter</span><span class="p">);</span>
<a name="line-354"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">HSplitter</span><span class="o">-&gt;</span><span class="n">setStretchFactor</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
<a name="line-355"></a>
<a name="line-356"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sortMenu</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QMenu</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-357"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sortMenu</span><span class="o">-&gt;</span><span class="n">setTitle</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Sorting&quot;</span><span class="p">));</span>
<a name="line-358"></a> <span class="n">QActionGroup</span><span class="o">*</span> <span class="k">const</span> <span class="n">sortOrderExclusive</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QActionGroup</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sortMenu</span><span class="p">);</span>
<a name="line-359"></a> <span class="n">sortOrderExclusive</span><span class="o">-&gt;</span><span class="n">setExclusive</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-360"></a>
<a name="line-361"></a> <span class="n">connect</span><span class="p">(</span><span class="n">sortOrderExclusive</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="n">QAction</span><span class="o">*</span><span class="p">)),</span>
<a name="line-362"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotSortOptionTriggered</span><span class="p">(</span><span class="n">QAction</span><span class="o">*</span><span class="p">)));</span>
<a name="line-363"></a>
<a name="line-364"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sortActionOldestFirst</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Show oldest first&quot;</span><span class="p">),</span> <span class="n">sortOrderExclusive</span><span class="p">);</span>
<a name="line-365"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sortActionOldestFirst</span><span class="o">-&gt;</span><span class="n">setCheckable</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-366"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sortMenu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sortActionOldestFirst</span><span class="p">);</span>
<a name="line-367"></a>
<a name="line-368"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sortActionYoungestFirst</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Show youngest first&quot;</span><span class="p">),</span> <span class="n">sortOrderExclusive</span><span class="p">);</span>
<a name="line-369"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sortMenu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sortActionYoungestFirst</span><span class="p">);</span>
<a name="line-370"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sortActionYoungestFirst</span><span class="o">-&gt;</span><span class="n">setCheckable</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-371"></a>
<a name="line-372"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="n">mapVBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-373"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapWidget</span> <span class="o">=</span> <span class="n">makeMapWidget</span><span class="p">(</span><span class="o">&amp;</span><span class="n">mapVBox</span><span class="p">);</span>
<a name="line-374"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">searchWidget</span><span class="o">-&gt;</span><span class="n">setPrimaryMapWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mapWidget</span><span class="p">);</span>
<a name="line-375"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapSplitter</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QSplitter</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-376"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapSplitter</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">mapVBox</span><span class="p">);</span>
<a name="line-377"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">VSplitter</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mapSplitter</span><span class="p">);</span>
<a name="line-378"></a>
<a name="line-379"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">treeView</span> <span class="o">=</span> <span class="k">new</span> <span class="n">GPSItemList</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-380"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">treeView</span><span class="o">-&gt;</span><span class="n">setModelAndSelectionModel</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="p">);</span>
<a name="line-381"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">treeView</span><span class="o">-&gt;</span><span class="n">setDragDropHandler</span><span class="p">(</span><span class="k">new</span> <span class="n">GPSItemListDragDropHandler</span><span class="p">(</span><span class="k">this</span><span class="p">));</span>
<a name="line-382"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">treeView</span><span class="o">-&gt;</span><span class="n">setDragEnabled</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-383"></a> <span class="c1">// TODO: save and restore the state of the header</span>
<a name="line-384"></a> <span class="c1">// TODO: add a context menu to the header to select which columns should be visible</span>
<a name="line-385"></a> <span class="c1">// TODO: add sorting by column</span>
<a name="line-386"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">treeView</span><span class="o">-&gt;</span><span class="n">setSelectionMode</span><span class="p">(</span><span class="n">QAbstractItemView</span><span class="o">::</span><span class="n">ExtendedSelection</span><span class="p">);</span>
<a name="line-387"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">treeView</span><span class="o">-&gt;</span><span class="n">setSortingEnabled</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-388"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">VSplitter</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">treeView</span><span class="p">);</span>
<a name="line-389"></a>
<a name="line-390"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">listViewContextMenu</span> <span class="o">=</span> <span class="k">new</span> <span class="n">GPSItemListContextMenu</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">treeView</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bookmarkOwner</span><span class="p">);</span>
<a name="line-391"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">HSplitter</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">stackedWidget</span><span class="p">);</span>
<a name="line-392"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">HSplitter</span><span class="o">-&gt;</span><span class="n">setCollapsible</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">true</span><span class="p">);</span>
<a name="line-393"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">splitterSize</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-394"></a>
<a name="line-395"></a> <span class="n">DVBox</span><span class="o">*</span> <span class="k">const</span> <span class="n">vboxTabBar</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DVBox</span><span class="p">(</span><span class="n">hboxMain</span><span class="p">);</span>
<a name="line-396"></a> <span class="n">vboxTabBar</span><span class="o">-&gt;</span><span class="n">layout</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">setContentsMargins</span><span class="p">(</span><span class="n">QMargins</span><span class="p">());</span>
<a name="line-397"></a> <span class="n">vboxTabBar</span><span class="o">-&gt;</span><span class="n">layout</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">setSpacing</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<a name="line-398"></a>
<a name="line-399"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabBar</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QTabBar</span><span class="p">(</span><span class="n">vboxTabBar</span><span class="p">);</span>
<a name="line-400"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabBar</span><span class="o">-&gt;</span><span class="n">setShape</span><span class="p">(</span><span class="n">QTabBar</span><span class="o">::</span><span class="n">RoundedEast</span><span class="p">);</span>
<a name="line-401"></a>
<a name="line-402"></a> <span class="k">dynamic_cast</span><span class="o">&lt;</span><span class="n">QVBoxLayout</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">vboxTabBar</span><span class="o">-&gt;</span><span class="n">layout</span><span class="p">())</span><span class="o">-&gt;</span><span class="n">addStretch</span><span class="p">(</span><span class="mi">200</span><span class="p">);</span>
<a name="line-403"></a>
<a name="line-404"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabBar</span><span class="o">-&gt;</span><span class="n">addTab</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Details&quot;</span><span class="p">));</span>
<a name="line-405"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabBar</span><span class="o">-&gt;</span><span class="n">addTab</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;GPS Correlator&quot;</span><span class="p">));</span>
<a name="line-406"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabBar</span><span class="o">-&gt;</span><span class="n">addTab</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Undo/Redo&quot;</span><span class="p">));</span>
<a name="line-407"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabBar</span><span class="o">-&gt;</span><span class="n">addTab</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Reverse Geocoding&quot;</span><span class="p">));</span>
<a name="line-408"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabBar</span><span class="o">-&gt;</span><span class="n">addTab</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Search&quot;</span><span class="p">));</span>
<a name="line-409"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabBar</span><span class="o">-&gt;</span><span class="n">addTab</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;KML Export&quot;</span><span class="p">));</span>
<a name="line-410"></a>
<a name="line-411"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabBar</span><span class="o">-&gt;</span><span class="n">installEventFilter</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-412"></a>
<a name="line-413"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">detailsWidget</span> <span class="o">=</span> <span class="k">new</span> <span class="n">GPSItemDetails</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">stackedWidget</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="p">);</span>
<a name="line-414"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stackedWidget</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">detailsWidget</span><span class="p">);</span>
<a name="line-415"></a>
<a name="line-416"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">correlatorWidget</span> <span class="o">=</span> <span class="k">new</span> <span class="n">GPSCorrelatorWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">stackedWidget</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">trackManager</span><span class="p">);</span>
<a name="line-417"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stackedWidget</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">correlatorWidget</span><span class="p">);</span>
<a name="line-418"></a>
<a name="line-419"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">undoView</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QUndoView</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">undoStack</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stackedWidget</span><span class="p">);</span>
<a name="line-420"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stackedWidget</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">undoView</span><span class="p">);</span>
<a name="line-421"></a>
<a name="line-422"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rgWidget</span> <span class="o">=</span> <span class="k">new</span> <span class="n">RGWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span><span class="o">-&gt;</span><span class="n">tagFilterModel</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stackedWidget</span><span class="p">);</span>
<a name="line-423"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stackedWidget</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rgWidget</span><span class="p">);</span>
<a name="line-424"></a>
<a name="line-425"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stackedWidget</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">searchWidget</span><span class="p">);</span>
<a name="line-426"></a>
<a name="line-427"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">kmlWidget</span> <span class="o">=</span> <span class="k">new</span> <span class="n">KmlWidget</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span><span class="p">);</span>
<a name="line-428"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stackedWidget</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">kmlWidget</span><span class="p">);</span>
<a name="line-429"></a>
<a name="line-430"></a> <span class="c1">// ---------------------------------------------------------------</span>
<a name="line-431"></a>
<a name="line-432"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">treeView</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalImageActivated</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">)),</span>
<a name="line-433"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotImageActivated</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">)));</span>
<a name="line-434"></a>
<a name="line-435"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">correlatorWidget</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalSetUIEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-436"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotSetUIEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
<a name="line-437"></a>
<a name="line-438"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">correlatorWidget</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalSetUIEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">,</span><span class="n">QObject</span><span class="o">*</span><span class="k">const</span><span class="p">,</span><span class="n">QString</span><span class="p">)),</span>
<a name="line-439"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotSetUIEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">,</span><span class="n">QObject</span><span class="o">*</span><span class="k">const</span><span class="p">,</span><span class="n">QString</span><span class="p">)));</span>
<a name="line-440"></a>
<a name="line-441"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">correlatorWidget</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalProgressSetup</span><span class="p">(</span><span class="kt">int</span><span class="p">,</span><span class="n">QString</span><span class="p">)),</span>
<a name="line-442"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotProgressSetup</span><span class="p">(</span><span class="kt">int</span><span class="p">,</span><span class="n">QString</span><span class="p">)));</span>
<a name="line-443"></a>
<a name="line-444"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">correlatorWidget</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalProgressChanged</span><span class="p">(</span><span class="kt">int</span><span class="p">)),</span>
<a name="line-445"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotProgressChanged</span><span class="p">(</span><span class="kt">int</span><span class="p">)));</span>
<a name="line-446"></a>
<a name="line-447"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">correlatorWidget</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalUndoCommand</span><span class="p">(</span><span class="n">GPSUndoCommand</span><span class="o">*</span><span class="p">)),</span>
<a name="line-448"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotGPSUndoCommand</span><span class="p">(</span><span class="n">GPSUndoCommand</span><span class="o">*</span><span class="p">)));</span>
<a name="line-449"></a>
<a name="line-450"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mapModelHelper</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalUndoCommand</span><span class="p">(</span><span class="n">GPSUndoCommand</span><span class="o">*</span><span class="p">)),</span>
<a name="line-451"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotGPSUndoCommand</span><span class="p">(</span><span class="n">GPSUndoCommand</span><span class="o">*</span><span class="p">)));</span>
<a name="line-452"></a>
<a name="line-453"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rgWidget</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalSetUIEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-454"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotSetUIEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
<a name="line-455"></a>
<a name="line-456"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rgWidget</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalSetUIEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">,</span><span class="n">QObject</span><span class="o">*</span><span class="k">const</span><span class="p">,</span><span class="n">QString</span><span class="p">)),</span>
<a name="line-457"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotSetUIEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">,</span><span class="n">QObject</span><span class="o">*</span><span class="k">const</span><span class="p">,</span><span class="n">QString</span><span class="p">)));</span>
<a name="line-458"></a>
<a name="line-459"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rgWidget</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalProgressSetup</span><span class="p">(</span><span class="kt">int</span><span class="p">,</span><span class="n">QString</span><span class="p">)),</span>
<a name="line-460"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotProgressSetup</span><span class="p">(</span><span class="kt">int</span><span class="p">,</span><span class="n">QString</span><span class="p">)));</span>
<a name="line-461"></a>
<a name="line-462"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rgWidget</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalProgressChanged</span><span class="p">(</span><span class="kt">int</span><span class="p">)),</span>
<a name="line-463"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotProgressChanged</span><span class="p">(</span><span class="kt">int</span><span class="p">)));</span>
<a name="line-464"></a>
<a name="line-465"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rgWidget</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalUndoCommand</span><span class="p">(</span><span class="n">GPSUndoCommand</span><span class="o">*</span><span class="p">)),</span>
<a name="line-466"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotGPSUndoCommand</span><span class="p">(</span><span class="n">GPSUndoCommand</span><span class="o">*</span><span class="p">)));</span>
<a name="line-467"></a>
<a name="line-468"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">searchWidget</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalUndoCommand</span><span class="p">(</span><span class="n">GPSUndoCommand</span><span class="o">*</span><span class="p">)),</span>
<a name="line-469"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotGPSUndoCommand</span><span class="p">(</span><span class="n">GPSUndoCommand</span><span class="o">*</span><span class="p">)));</span>
<a name="line-470"></a>
<a name="line-471"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">listViewContextMenu</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalSetUIEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-472"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotSetUIEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
<a name="line-473"></a>
<a name="line-474"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">listViewContextMenu</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalSetUIEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">,</span><span class="n">QObject</span><span class="o">*</span><span class="k">const</span><span class="p">,</span><span class="n">QString</span><span class="p">)),</span>
<a name="line-475"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotSetUIEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">,</span><span class="n">QObject</span><span class="o">*</span><span class="k">const</span><span class="p">,</span><span class="n">QString</span><span class="p">)));</span>
<a name="line-476"></a>
<a name="line-477"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">listViewContextMenu</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalProgressSetup</span><span class="p">(</span><span class="kt">int</span><span class="p">,</span><span class="n">QString</span><span class="p">)),</span>
<a name="line-478"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotProgressSetup</span><span class="p">(</span><span class="kt">int</span><span class="p">,</span><span class="n">QString</span><span class="p">)));</span>
<a name="line-479"></a>
<a name="line-480"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">listViewContextMenu</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalProgressChanged</span><span class="p">(</span><span class="kt">int</span><span class="p">)),</span>
<a name="line-481"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotProgressChanged</span><span class="p">(</span><span class="kt">int</span><span class="p">)));</span>
<a name="line-482"></a>
<a name="line-483"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">listViewContextMenu</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalUndoCommand</span><span class="p">(</span><span class="n">GPSUndoCommand</span><span class="o">*</span><span class="p">)),</span>
<a name="line-484"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotGPSUndoCommand</span><span class="p">(</span><span class="n">GPSUndoCommand</span><span class="o">*</span><span class="p">)));</span>
<a name="line-485"></a>
<a name="line-486"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tabBar</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">currentChanged</span><span class="p">(</span><span class="kt">int</span><span class="p">)),</span>
<a name="line-487"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotCurrentTabChanged</span><span class="p">(</span><span class="kt">int</span><span class="p">)));</span>
<a name="line-488"></a>
<a name="line-489"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">bookmarkOwner</span><span class="o">-&gt;</span><span class="n">bookmarkModelHelper</span><span class="p">(),</span>
<a name="line-490"></a> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalUndoCommand</span><span class="p">(</span><span class="n">GPSUndoCommand</span><span class="o">*</span><span class="p">)),</span>
<a name="line-491"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotGPSUndoCommand</span><span class="p">(</span><span class="n">GPSUndoCommand</span><span class="o">*</span><span class="p">)));</span>
<a name="line-492"></a>
<a name="line-493"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">detailsWidget</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalUndoCommand</span><span class="p">(</span><span class="n">GPSUndoCommand</span><span class="o">*</span><span class="p">)),</span>
<a name="line-494"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotGPSUndoCommand</span><span class="p">(</span><span class="n">GPSUndoCommand</span><span class="o">*</span><span class="p">)));</span>
<a name="line-495"></a>
<a name="line-496"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cbMapLayout</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">activated</span><span class="p">(</span><span class="kt">int</span><span class="p">)),</span>
<a name="line-497"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotLayoutChanged</span><span class="p">(</span><span class="kt">int</span><span class="p">)));</span>
<a name="line-498"></a>
<a name="line-499"></a> <span class="n">connect</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalMetadataChangedForUrl</span><span class="p">(</span><span class="n">QUrl</span><span class="p">)),</span>
<a name="line-500"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotMetadataChangedForUrl</span><span class="p">(</span><span class="n">QUrl</span><span class="p">)));</span>
<a name="line-501"></a>
<a name="line-502"></a> <span class="n">readSettings</span><span class="p">();</span>
<a name="line-503"></a>
<a name="line-504"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapWidget</span><span class="o">-&gt;</span><span class="n">setActive</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-505"></a>
<a name="line-506"></a> <span class="n">setItems</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span><span class="o">-&gt;</span><span class="n">currentGPSItems</span><span class="p">());</span>
<a name="line-507"></a><span class="p">}</span>
<a name="line-508"></a>
<a name="line-509"></a><span class="n">GeolocationEdit</span><span class="o">::~</span><span class="n">GeolocationEdit</span><span class="p">()</span>
<a name="line-510"></a><span class="p">{</span>
<a name="line-511"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
<a name="line-512"></a><span class="p">}</span>
<a name="line-513"></a>
<a name="line-514"></a><span class="kt">bool</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">eventFilter</span><span class="p">(</span><span class="n">QObject</span><span class="o">*</span> <span class="k">const</span> <span class="n">o</span><span class="p">,</span> <span class="n">QEvent</span><span class="o">*</span> <span class="k">const</span> <span class="n">e</span><span class="p">)</span>
<a name="line-515"></a><span class="p">{</span>
<a name="line-516"></a> <span class="k">if</span> <span class="p">((</span><span class="n">o</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabBar</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">type</span><span class="p">()</span> <span class="o">==</span> <span class="n">QEvent</span><span class="o">::</span><span class="n">MouseButtonPress</span><span class="p">))</span>
<a name="line-517"></a> <span class="p">{</span>
<a name="line-518"></a> <span class="n">QMouseEvent</span> <span class="k">const</span><span class="o">*</span> <span class="n">m</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">QMouseEvent</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">e</span><span class="p">);</span>
<a name="line-519"></a>
<a name="line-520"></a> <span class="n">QPoint</span> <span class="nf">p</span> <span class="p">(</span><span class="n">m</span><span class="o">-&gt;</span><span class="n">x</span><span class="p">(),</span> <span class="n">m</span><span class="o">-&gt;</span><span class="n">y</span><span class="p">());</span>
<a name="line-521"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">var</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabBar</span><span class="o">-&gt;</span><span class="n">tabAt</span><span class="p">(</span><span class="n">p</span><span class="p">);</span>
<a name="line-522"></a>
<a name="line-523"></a> <span class="k">if</span> <span class="p">(</span><span class="n">var</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-524"></a> <span class="p">{</span>
<a name="line-525"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-526"></a> <span class="p">}</span>
<a name="line-527"></a>
<a name="line-528"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">sizes</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">HSplitter</span><span class="o">-&gt;</span><span class="n">sizes</span><span class="p">();</span>
<a name="line-529"></a>
<a name="line-530"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">splitterSize</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-531"></a> <span class="p">{</span>
<a name="line-532"></a> <span class="k">if</span> <span class="p">(</span><span class="n">sizes</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-533"></a> <span class="p">{</span>
<a name="line-534"></a> <span class="n">sizes</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stackedWidget</span><span class="o">-&gt;</span><span class="n">widget</span><span class="p">(</span><span class="n">var</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">minimumSizeHint</span><span class="p">().</span><span class="n">width</span><span class="p">();</span>
<a name="line-535"></a> <span class="p">}</span>
<a name="line-536"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tabBar</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">()</span> <span class="o">==</span> <span class="n">var</span><span class="p">)</span>
<a name="line-537"></a> <span class="p">{</span>
<a name="line-538"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">splitterSize</span> <span class="o">=</span> <span class="n">sizes</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<a name="line-539"></a> <span class="n">sizes</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-540"></a> <span class="p">}</span>
<a name="line-541"></a> <span class="p">}</span>
<a name="line-542"></a> <span class="k">else</span>
<a name="line-543"></a> <span class="p">{</span>
<a name="line-544"></a> <span class="n">sizes</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">splitterSize</span><span class="p">;</span>
<a name="line-545"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">splitterSize</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-546"></a> <span class="p">}</span>
<a name="line-547"></a>
<a name="line-548"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabBar</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">var</span><span class="p">);</span>
<a name="line-549"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stackedWidget</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">var</span><span class="p">);</span>
<a name="line-550"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">HSplitter</span><span class="o">-&gt;</span><span class="n">setSizes</span><span class="p">(</span><span class="n">sizes</span><span class="p">);</span>
<a name="line-551"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">detailsWidget</span><span class="o">-&gt;</span><span class="n">slotSetActive</span><span class="p">((</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">stackedWidget</span><span class="o">-&gt;</span><span class="n">currentWidget</span><span class="p">()</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">detailsWidget</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
<a name="line-552"></a> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">splitterSize</span> <span class="o">==</span> <span class="mi">0</span><span class="p">));</span>
<a name="line-553"></a>
<a name="line-554"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-555"></a> <span class="p">}</span>
<a name="line-556"></a>
<a name="line-557"></a> <span class="k">return</span> <span class="n">QWidget</span><span class="o">::</span><span class="n">eventFilter</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="n">e</span><span class="p">);</span>
<a name="line-558"></a><span class="p">}</span>
<a name="line-559"></a>
<a name="line-560"></a><span class="kt">void</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">slotCurrentTabChanged</span><span class="p">(</span><span class="kt">int</span> <span class="n">index</span><span class="p">)</span>
<a name="line-561"></a><span class="p">{</span>
<a name="line-562"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabBar</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
<a name="line-563"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stackedWidget</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
<a name="line-564"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">detailsWidget</span><span class="o">-&gt;</span><span class="n">slotSetActive</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">stackedWidget</span><span class="o">-&gt;</span><span class="n">currentWidget</span><span class="p">()</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">detailsWidget</span><span class="p">);</span>
<a name="line-565"></a><span class="p">}</span>
<a name="line-566"></a>
<a name="line-567"></a><span class="kt">void</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">setCurrentTab</span><span class="p">(</span><span class="kt">int</span> <span class="n">index</span><span class="p">)</span>
<a name="line-568"></a><span class="p">{</span>
<a name="line-569"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabBar</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
<a name="line-570"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stackedWidget</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
<a name="line-571"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">sizes</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">HSplitter</span><span class="o">-&gt;</span><span class="n">sizes</span><span class="p">();</span>
<a name="line-572"></a>
<a name="line-573"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">splitterSize</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-574"></a> <span class="p">{</span>
<a name="line-575"></a> <span class="n">sizes</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">splitterSize</span><span class="p">;</span>
<a name="line-576"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">splitterSize</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-577"></a> <span class="p">}</span>
<a name="line-578"></a>
<a name="line-579"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">HSplitter</span><span class="o">-&gt;</span><span class="n">setSizes</span><span class="p">(</span><span class="n">sizes</span><span class="p">);</span>
<a name="line-580"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">detailsWidget</span><span class="o">-&gt;</span><span class="n">slotSetActive</span><span class="p">((</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">stackedWidget</span><span class="o">-&gt;</span><span class="n">currentWidget</span><span class="p">()</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">detailsWidget</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
<a name="line-581"></a> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">splitterSize</span> <span class="o">==</span> <span class="mi">0</span><span class="p">));</span>
<a name="line-582"></a><span class="p">}</span>
<a name="line-583"></a>
<a name="line-584"></a><span class="kt">void</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">setImages</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="o">&gt;&amp;</span> <span class="n">images</span><span class="p">)</span>
<a name="line-585"></a><span class="p">{</span>
<a name="line-586"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">GPSItemContainer</span><span class="o">*&gt;</span> <span class="n">items</span><span class="p">;</span>
<a name="line-587"></a>
<a name="line-588"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">QUrl</span><span class="o">&amp;</span> <span class="n">u</span><span class="p">,</span> <span class="n">images</span><span class="p">)</span>
<a name="line-589"></a> <span class="p">{</span>
<a name="line-590"></a> <span class="n">items</span> <span class="o">&lt;&lt;</span> <span class="k">new</span> <span class="n">GPSItemContainer</span><span class="p">(</span><span class="n">u</span><span class="p">);</span>
<a name="line-591"></a> <span class="p">}</span>
<a name="line-592"></a>
<a name="line-593"></a> <span class="n">setItems</span><span class="p">(</span><span class="n">items</span><span class="p">);</span>
<a name="line-594"></a><span class="p">}</span>
<a name="line-595"></a>
<a name="line-596"></a><span class="kt">void</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">setItems</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">GPSItemContainer</span><span class="o">*&gt;&amp;</span> <span class="n">items</span><span class="p">)</span>
<a name="line-597"></a><span class="p">{</span>
<a name="line-598"></a> <span class="n">foreach</span> <span class="p">(</span><span class="n">GPSItemContainer</span><span class="o">*</span> <span class="k">const</span> <span class="n">newItem</span><span class="p">,</span> <span class="n">items</span><span class="p">)</span>
<a name="line-599"></a> <span class="p">{</span>
<a name="line-600"></a> <span class="n">newItem</span><span class="o">-&gt;</span><span class="n">loadImageData</span><span class="p">();</span>
<a name="line-601"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">newItem</span><span class="p">);</span>
<a name="line-602"></a> <span class="p">}</span>
<a name="line-603"></a>
<a name="line-604"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QPersistentModelIndex</span><span class="o">&gt;</span> <span class="n">imagesToLoad</span><span class="p">;</span>
<a name="line-605"></a>
<a name="line-606"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-607"></a> <span class="p">{</span>
<a name="line-608"></a> <span class="n">imagesToLoad</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-609"></a> <span class="p">}</span>
<a name="line-610"></a>
<a name="line-611"></a> <span class="n">slotSetUIEnabled</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-612"></a> <span class="n">slotProgressSetup</span><span class="p">(</span><span class="n">imagesToLoad</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Loading metadata -&quot;</span><span class="p">));</span>
<a name="line-613"></a>
<a name="line-614"></a> <span class="c1">// initiate the saving</span>
<a name="line-615"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOCountDone</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-616"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOCountTotal</span> <span class="o">=</span> <span class="n">imagesToLoad</span><span class="p">.</span><span class="n">count</span><span class="p">();</span>
<a name="line-617"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOFutureWatcher</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QFutureWatcher</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-618"></a>
<a name="line-619"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOFutureWatcher</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">resultsReadyAt</span><span class="p">(</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
<a name="line-620"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotFileMetadataLoaded</span><span class="p">(</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)));</span>
<a name="line-621"></a>
<a name="line-622"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOFuture</span> <span class="o">=</span> <span class="n">QtConcurrent</span><span class="o">::</span><span class="n">mapped</span><span class="p">(</span><span class="n">imagesToLoad</span><span class="p">,</span> <span class="n">LoadFileMetadataHelper</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="p">));</span>
<a name="line-623"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOFutureWatcher</span><span class="o">-&gt;</span><span class="n">setFuture</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOFuture</span><span class="p">);</span>
<a name="line-624"></a><span class="p">}</span>
<a name="line-625"></a>
<a name="line-626"></a><span class="kt">void</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">slotFileMetadataLoaded</span><span class="p">(</span><span class="kt">int</span> <span class="n">beginIndex</span><span class="p">,</span> <span class="kt">int</span> <span class="n">endIndex</span><span class="p">)</span>
<a name="line-627"></a><span class="p">{</span>
<a name="line-628"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_DPLUGIN_GENERIC_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">beginIndex</span> <span class="o">&lt;&lt;</span> <span class="n">endIndex</span><span class="p">;</span>
<a name="line-629"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOCountDone</span> <span class="o">+=</span> <span class="p">(</span><span class="n">endIndex</span><span class="o">-</span><span class="n">beginIndex</span><span class="p">);</span>
<a name="line-630"></a> <span class="n">slotProgressChanged</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOCountDone</span><span class="p">);</span>
<a name="line-631"></a>
<a name="line-632"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOCountDone</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOCountTotal</span><span class="p">)</span>
<a name="line-633"></a> <span class="p">{</span>
<a name="line-634"></a> <span class="n">slotSetUIEnabled</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-635"></a> <span class="p">}</span>
<a name="line-636"></a><span class="p">}</span>
<a name="line-637"></a>
<a name="line-638"></a><span class="kt">void</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">readSettings</span><span class="p">()</span>
<a name="line-639"></a><span class="p">{</span>
<a name="line-640"></a> <span class="n">KSharedConfig</span><span class="o">::</span><span class="n">Ptr</span> <span class="n">config</span> <span class="o">=</span> <span class="n">KSharedConfig</span><span class="o">::</span><span class="n">openConfig</span><span class="p">();</span>
<a name="line-641"></a> <span class="n">KConfigGroup</span> <span class="n">group</span> <span class="o">=</span> <span class="n">config</span><span class="o">-&gt;</span><span class="n">group</span><span class="p">(</span><span class="s">&quot;Geolocation Edit Settings&quot;</span><span class="p">);</span>
<a name="line-642"></a>
<a name="line-643"></a> <span class="c1">// --------------------------</span>
<a name="line-644"></a>
<a name="line-645"></a> <span class="c1">// TODO: sanely determine a default backend</span>
<a name="line-646"></a><span class="hll"> <span class="k">const</span> <span class="n">KConfigGroup</span> <span class="n">groupMapWidget</span> <span class="o">=</span> <span class="n">KConfigGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">group</span><span class="p">,</span> <span class="s">&quot;Map Widget&quot;</span><span class="p">);</span><span class='error2'>&lt;--- Shadowed declaration</span>
</span><a name="line-647"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapWidget</span><span class="o">-&gt;</span><span class="n">readSettingsFromGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">groupMapWidget</span><span class="p">);</span>
<a name="line-648"></a>
<a name="line-649"></a> <span class="k">const</span> <span class="n">KConfigGroup</span> <span class="n">groupCorrelatorWidget</span> <span class="o">=</span> <span class="n">KConfigGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">group</span><span class="p">,</span> <span class="s">&quot;Correlator Widget&quot;</span><span class="p">);</span>
<a name="line-650"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">correlatorWidget</span><span class="o">-&gt;</span><span class="n">readSettingsFromGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">groupCorrelatorWidget</span><span class="p">);</span>
<a name="line-651"></a>
<a name="line-652"></a> <span class="k">const</span> <span class="n">KConfigGroup</span> <span class="n">groupTreeView</span> <span class="o">=</span> <span class="n">KConfigGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">group</span><span class="p">,</span> <span class="s">&quot;Tree View&quot;</span><span class="p">);</span>
<a name="line-653"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">treeView</span><span class="o">-&gt;</span><span class="n">readSettingsFromGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">groupTreeView</span><span class="p">);</span>
<a name="line-654"></a>
<a name="line-655"></a> <span class="k">const</span> <span class="n">KConfigGroup</span> <span class="n">groupSearchWidget</span> <span class="o">=</span> <span class="n">KConfigGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">group</span><span class="p">,</span> <span class="s">&quot;Search Widget&quot;</span><span class="p">);</span>
<a name="line-656"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">searchWidget</span><span class="o">-&gt;</span><span class="n">readSettingsFromGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">groupSearchWidget</span><span class="p">);</span>
<a name="line-657"></a>
<a name="line-658"></a> <span class="k">const</span> <span class="n">KConfigGroup</span> <span class="n">groupRGWidget</span> <span class="o">=</span> <span class="n">KConfigGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">group</span><span class="p">,</span> <span class="s">&quot;Reverse Geocoding Widget&quot;</span><span class="p">);</span>
<a name="line-659"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rgWidget</span><span class="o">-&gt;</span><span class="n">readSettingsFromGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">groupRGWidget</span><span class="p">);</span>
<a name="line-660"></a>
<a name="line-661"></a> <span class="k">const</span> <span class="n">KConfigGroup</span> <span class="n">groupDialog</span> <span class="o">=</span> <span class="n">KConfigGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">group</span><span class="p">,</span> <span class="s">&quot;Dialog&quot;</span><span class="p">);</span>
<a name="line-662"></a>
<a name="line-663"></a> <span class="c1">// --------------------------</span>
<a name="line-664"></a>
<a name="line-665"></a> <span class="n">setCurrentTab</span><span class="p">(</span><span class="n">group</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Current Tab&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">));</span>
<a name="line-666"></a> <span class="k">const</span> <span class="kt">bool</span> <span class="n">showOldestFirst</span> <span class="o">=</span> <span class="n">group</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Show oldest images first&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-667"></a>
<a name="line-668"></a> <span class="k">if</span> <span class="p">(</span><span class="n">showOldestFirst</span><span class="p">)</span>
<a name="line-669"></a> <span class="p">{</span>
<a name="line-670"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sortActionOldestFirst</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-671"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapWidget</span><span class="o">-&gt;</span><span class="n">setSortKey</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<a name="line-672"></a> <span class="p">}</span>
<a name="line-673"></a> <span class="k">else</span>
<a name="line-674"></a> <span class="p">{</span>
<a name="line-675"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sortActionYoungestFirst</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-676"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapWidget</span><span class="o">-&gt;</span><span class="n">setSortKey</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<a name="line-677"></a> <span class="p">}</span>
<a name="line-678"></a>
<a name="line-679"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionBookmarkVisibility</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">group</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Bookmarks visible&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">));</span>
<a name="line-680"></a> <span class="n">slotBookmarkVisibilityToggled</span><span class="p">();</span>
<a name="line-681"></a>
<a name="line-682"></a> <span class="k">if</span> <span class="p">(</span><span class="n">group</span><span class="p">.</span><span class="n">hasKey</span><span class="p">(</span><span class="s">&quot;SplitterState V1&quot;</span><span class="p">))</span>
<a name="line-683"></a> <span class="p">{</span>
<a name="line-684"></a> <span class="k">const</span> <span class="n">QByteArray</span> <span class="n">splitterState</span> <span class="o">=</span> <span class="n">QByteArray</span><span class="o">::</span><span class="n">fromBase64</span><span class="p">(</span><span class="n">group</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;SplitterState V1&quot;</span><span class="p">,</span> <span class="n">QByteArray</span><span class="p">()));</span>
<a name="line-685"></a>
<a name="line-686"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">splitterState</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-687"></a> <span class="p">{</span>
<a name="line-688"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">VSplitter</span><span class="o">-&gt;</span><span class="n">restoreState</span><span class="p">(</span><span class="n">splitterState</span><span class="p">);</span>
<a name="line-689"></a> <span class="p">}</span>
<a name="line-690"></a> <span class="p">}</span>
<a name="line-691"></a>
<a name="line-692"></a> <span class="k">if</span> <span class="p">(</span><span class="n">group</span><span class="p">.</span><span class="n">hasKey</span><span class="p">(</span><span class="s">&quot;SplitterState H1&quot;</span><span class="p">))</span>
<a name="line-693"></a> <span class="p">{</span>
<a name="line-694"></a> <span class="k">const</span> <span class="n">QByteArray</span> <span class="n">splitterState</span> <span class="o">=</span> <span class="n">QByteArray</span><span class="o">::</span><span class="n">fromBase64</span><span class="p">(</span><span class="n">group</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;SplitterState H1&quot;</span><span class="p">,</span> <span class="n">QByteArray</span><span class="p">()));</span>
<a name="line-695"></a>
<a name="line-696"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">splitterState</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-697"></a> <span class="p">{</span>
<a name="line-698"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">HSplitter</span><span class="o">-&gt;</span><span class="n">restoreState</span><span class="p">(</span><span class="n">splitterState</span><span class="p">);</span>
<a name="line-699"></a> <span class="p">}</span>
<a name="line-700"></a> <span class="p">}</span>
<a name="line-701"></a>
<a name="line-702"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">splitterSize</span> <span class="o">=</span> <span class="n">group</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Splitter H1 CollapsedSize&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-703"></a>
<a name="line-704"></a> <span class="c1">// ----------------------------------</span>
<a name="line-705"></a>
<a name="line-706"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapLayout</span> <span class="o">=</span> <span class="n">MapLayout</span><span class="p">(</span><span class="n">group</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Map Layout&quot;</span><span class="p">,</span> <span class="n">QVariant</span><span class="o">::</span><span class="n">fromValue</span><span class="p">(</span><span class="kt">int</span><span class="p">(</span><span class="n">MapLayoutOne</span><span class="p">))).</span><span class="n">value</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="p">());</span>
<a name="line-707"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cbMapLayout</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mapLayout</span><span class="p">);</span>
<a name="line-708"></a> <span class="n">adjustMapLayout</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-709"></a>
<a name="line-710"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mapWidget2</span><span class="p">)</span>
<a name="line-711"></a> <span class="p">{</span>
<a name="line-712"></a><span class="hll"> <span class="k">const</span> <span class="n">KConfigGroup</span> <span class="n">groupMapWidget</span> <span class="o">=</span> <span class="n">KConfigGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">group</span><span class="p">,</span> <span class="s">&quot;Map Widget 2&quot;</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-713"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapWidget2</span><span class="o">-&gt;</span><span class="n">readSettingsFromGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">groupMapWidget</span><span class="p">);</span>
<a name="line-714"></a>
<a name="line-715"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapWidget2</span><span class="o">-&gt;</span><span class="n">setActive</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-716"></a> <span class="p">}</span>
<a name="line-717"></a><span class="p">}</span>
<a name="line-718"></a>
<a name="line-719"></a><span class="kt">void</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">saveSettings</span><span class="p">()</span>
<a name="line-720"></a><span class="p">{</span>
<a name="line-721"></a> <span class="n">KSharedConfig</span><span class="o">::</span><span class="n">Ptr</span> <span class="n">config</span> <span class="o">=</span> <span class="n">KSharedConfig</span><span class="o">::</span><span class="n">openConfig</span><span class="p">();</span>
<a name="line-722"></a> <span class="n">KConfigGroup</span> <span class="n">group</span> <span class="o">=</span> <span class="n">config</span><span class="o">-&gt;</span><span class="n">group</span><span class="p">(</span><span class="s">&quot;Geolocation Edit Settings&quot;</span><span class="p">);</span>
<a name="line-723"></a>
<a name="line-724"></a> <span class="c1">// --------------------------</span>
<a name="line-725"></a>
<a name="line-726"></a><span class="hll"> <span class="n">KConfigGroup</span> <span class="n">groupMapWidget</span> <span class="o">=</span> <span class="n">KConfigGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">group</span><span class="p">,</span> <span class="s">&quot;Map Widget&quot;</span><span class="p">);</span><span class='error2'>&lt;--- Shadowed declaration</span>
</span><a name="line-727"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapWidget</span><span class="o">-&gt;</span><span class="n">saveSettingsToGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">groupMapWidget</span><span class="p">);</span>
<a name="line-728"></a>
<a name="line-729"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mapWidget2</span><span class="p">)</span>
<a name="line-730"></a> <span class="p">{</span>
<a name="line-731"></a><span class="hll"> <span class="n">KConfigGroup</span> <span class="n">groupMapWidget</span> <span class="o">=</span> <span class="n">KConfigGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">group</span><span class="p">,</span> <span class="s">&quot;Map Widget 2&quot;</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-732"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapWidget2</span><span class="o">-&gt;</span><span class="n">saveSettingsToGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">groupMapWidget</span><span class="p">);</span>
<a name="line-733"></a> <span class="p">}</span>
<a name="line-734"></a>
<a name="line-735"></a> <span class="n">KConfigGroup</span> <span class="n">groupCorrelatorWidget</span> <span class="o">=</span> <span class="n">KConfigGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">group</span><span class="p">,</span> <span class="s">&quot;Correlator Widget&quot;</span><span class="p">);</span>
<a name="line-736"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">correlatorWidget</span><span class="o">-&gt;</span><span class="n">saveSettingsToGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">groupCorrelatorWidget</span><span class="p">);</span>
<a name="line-737"></a>
<a name="line-738"></a> <span class="n">KConfigGroup</span> <span class="n">groupTreeView</span> <span class="o">=</span> <span class="n">KConfigGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">group</span><span class="p">,</span> <span class="s">&quot;Tree View&quot;</span><span class="p">);</span>
<a name="line-739"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">treeView</span><span class="o">-&gt;</span><span class="n">saveSettingsToGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">groupTreeView</span><span class="p">);</span>
<a name="line-740"></a>
<a name="line-741"></a> <span class="n">KConfigGroup</span> <span class="n">groupSearchWidget</span> <span class="o">=</span> <span class="n">KConfigGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">group</span><span class="p">,</span> <span class="s">&quot;Search Widget&quot;</span><span class="p">);</span>
<a name="line-742"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">searchWidget</span><span class="o">-&gt;</span><span class="n">saveSettingsToGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">groupSearchWidget</span><span class="p">);</span>
<a name="line-743"></a>
<a name="line-744"></a> <span class="n">KConfigGroup</span> <span class="n">groupRGWidget</span> <span class="o">=</span> <span class="n">KConfigGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">group</span><span class="p">,</span> <span class="s">&quot;Reverse Geocoding Widget&quot;</span><span class="p">);</span>
<a name="line-745"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rgWidget</span><span class="o">-&gt;</span><span class="n">saveSettingsToGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">groupRGWidget</span><span class="p">);</span>
<a name="line-746"></a>
<a name="line-747"></a> <span class="c1">// --------------------------</span>
<a name="line-748"></a>
<a name="line-749"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Current Tab&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabBar</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">());</span>
<a name="line-750"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Show oldest images first&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sortActionOldestFirst</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-751"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;SplitterState V1&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">VSplitter</span><span class="o">-&gt;</span><span class="n">saveState</span><span class="p">().</span><span class="n">toBase64</span><span class="p">());</span>
<a name="line-752"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;SplitterState H1&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">HSplitter</span><span class="o">-&gt;</span><span class="n">saveState</span><span class="p">().</span><span class="n">toBase64</span><span class="p">());</span>
<a name="line-753"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Splitter H1 CollapsedSize&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">splitterSize</span><span class="p">);</span>
<a name="line-754"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Map Layout&quot;</span><span class="p">,</span> <span class="n">QVariant</span><span class="o">::</span><span class="n">fromValue</span><span class="p">(</span><span class="kt">int</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mapLayout</span><span class="p">)));</span>
<a name="line-755"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Bookmarks visible&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionBookmarkVisibility</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-756"></a>
<a name="line-757"></a> <span class="n">config</span><span class="o">-&gt;</span><span class="n">sync</span><span class="p">();</span>
<a name="line-758"></a><span class="p">}</span>
<a name="line-759"></a>
<a name="line-760"></a><span class="kt">void</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">closeEvent</span><span class="p">(</span><span class="n">QCloseEvent</span> <span class="o">*</span><span class="n">e</span><span class="p">)</span>
<a name="line-761"></a><span class="p">{</span>
<a name="line-762"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">e</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span>
<a name="line-763"></a>
<a name="line-764"></a> <span class="c1">// is the UI locked?</span>
<a name="line-765"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">uiEnabled</span><span class="p">)</span>
<a name="line-766"></a> <span class="p">{</span>
<a name="line-767"></a> <span class="c1">// please wait until we are done ...</span>
<a name="line-768"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-769"></a> <span class="p">}</span>
<a name="line-770"></a>
<a name="line-771"></a> <span class="c1">// are there any modified images?</span>
<a name="line-772"></a> <span class="kt">int</span> <span class="n">dirtyImagesCount</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-773"></a>
<a name="line-774"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-775"></a> <span class="p">{</span>
<a name="line-776"></a> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">itemIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-777"></a> <span class="n">GPSItemContainer</span><span class="o">*</span> <span class="k">const</span> <span class="n">item</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="o">-&gt;</span><span class="n">itemFromIndex</span><span class="p">(</span><span class="n">itemIndex</span><span class="p">);</span>
<a name="line-778"></a>
<a name="line-779"></a> <span class="k">if</span> <span class="p">(</span><span class="n">item</span><span class="o">-&gt;</span><span class="n">isDirty</span><span class="p">()</span> <span class="o">||</span> <span class="n">item</span><span class="o">-&gt;</span><span class="n">isTagListDirty</span><span class="p">())</span>
<a name="line-780"></a> <span class="p">{</span>
<a name="line-781"></a> <span class="o">++</span><span class="n">dirtyImagesCount</span><span class="p">;</span>
<a name="line-782"></a> <span class="p">}</span>
<a name="line-783"></a> <span class="p">}</span>
<a name="line-784"></a>
<a name="line-785"></a> <span class="k">if</span> <span class="p">(</span><span class="n">dirtyImagesCount</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-786"></a> <span class="p">{</span>
<a name="line-787"></a> <span class="k">const</span> <span class="n">QString</span> <span class="n">message</span> <span class="o">=</span> <span class="n">i18np</span><span class="p">(</span>
<a name="line-788"></a> <span class="s">&quot;You have 1 modified image.&quot;</span><span class="p">,</span>
<a name="line-789"></a> <span class="s">&quot;You have %1 modified images.&quot;</span><span class="p">,</span>
<a name="line-790"></a> <span class="n">dirtyImagesCount</span>
<a name="line-791"></a> <span class="p">);</span>
<a name="line-792"></a>
<a name="line-793"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">chosenAction</span> <span class="o">=</span> <span class="n">DMessageBox</span><span class="o">::</span><span class="n">showYesNo</span><span class="p">(</span><span class="n">QMessageBox</span><span class="o">::</span><span class="n">Warning</span><span class="p">,</span>
<a name="line-794"></a> <span class="k">this</span><span class="p">,</span>
<a name="line-795"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Unsaved changes&quot;</span><span class="p">),</span>
<a name="line-796"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;%1 Would you like to save the changes you made to them?&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">)</span>
<a name="line-797"></a> <span class="p">);</span>
<a name="line-798"></a>
<a name="line-799"></a> <span class="k">if</span> <span class="p">(</span><span class="n">chosenAction</span> <span class="o">==</span> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">No</span><span class="p">)</span>
<a name="line-800"></a> <span class="p">{</span>
<a name="line-801"></a> <span class="n">saveSettings</span><span class="p">();</span>
<a name="line-802"></a> <span class="n">e</span><span class="o">-&gt;</span><span class="n">accept</span><span class="p">();</span>
<a name="line-803"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-804"></a> <span class="p">}</span>
<a name="line-805"></a>
<a name="line-806"></a> <span class="k">if</span> <span class="p">(</span><span class="n">chosenAction</span> <span class="o">==</span> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">Yes</span><span class="p">)</span>
<a name="line-807"></a> <span class="p">{</span>
<a name="line-808"></a> <span class="c1">// the user wants to save his changes.</span>
<a name="line-809"></a> <span class="c1">// this will initiate the saving process and then close the dialog.</span>
<a name="line-810"></a> <span class="n">saveChanges</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-811"></a> <span class="p">}</span>
<a name="line-812"></a>
<a name="line-813"></a> <span class="c1">// do not close the dialog for now</span>
<a name="line-814"></a> <span class="n">e</span><span class="o">-&gt;</span><span class="n">ignore</span><span class="p">();</span>
<a name="line-815"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-816"></a> <span class="p">}</span>
<a name="line-817"></a>
<a name="line-818"></a> <span class="n">saveSettings</span><span class="p">();</span>
<a name="line-819"></a> <span class="n">e</span><span class="o">-&gt;</span><span class="n">accept</span><span class="p">();</span>
<a name="line-820"></a><span class="p">}</span>
<a name="line-821"></a>
<a name="line-822"></a><span class="kt">void</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">slotImageActivated</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">index</span><span class="p">)</span>
<a name="line-823"></a><span class="p">{</span>
<a name="line-824"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">detailsWidget</span><span class="o">-&gt;</span><span class="n">slotSetCurrentImage</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
<a name="line-825"></a>
<a name="line-826"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">index</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-827"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-828"></a>
<a name="line-829"></a> <span class="n">GPSItemContainer</span><span class="o">*</span> <span class="k">const</span> <span class="n">item</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="o">-&gt;</span><span class="n">itemFromIndex</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
<a name="line-830"></a>
<a name="line-831"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">item</span><span class="p">)</span>
<a name="line-832"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-833"></a>
<a name="line-834"></a> <span class="k">const</span> <span class="n">GeoCoordinates</span> <span class="n">imageCoordinates</span> <span class="o">=</span> <span class="n">item</span><span class="o">-&gt;</span><span class="n">coordinates</span><span class="p">();</span>
<a name="line-835"></a>
<a name="line-836"></a> <span class="k">if</span> <span class="p">(</span><span class="n">imageCoordinates</span><span class="p">.</span><span class="n">hasCoordinates</span><span class="p">())</span>
<a name="line-837"></a> <span class="p">{</span>
<a name="line-838"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapWidget</span><span class="o">-&gt;</span><span class="n">setCenter</span><span class="p">(</span><span class="n">imageCoordinates</span><span class="p">);</span>
<a name="line-839"></a> <span class="p">}</span>
<a name="line-840"></a><span class="p">}</span>
<a name="line-841"></a>
<a name="line-842"></a><span class="kt">void</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">slotSetUIEnabled</span><span class="p">(</span><span class="k">const</span> <span class="kt">bool</span> <span class="n">enabledState</span><span class="p">,</span>
<a name="line-843"></a> <span class="n">QObject</span><span class="o">*</span> <span class="k">const</span> <span class="n">cancelObject</span><span class="p">,</span>
<a name="line-844"></a> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">cancelSlot</span><span class="p">)</span>
<a name="line-845"></a><span class="p">{</span>
<a name="line-846"></a> <span class="k">if</span> <span class="p">(</span><span class="n">enabledState</span><span class="p">)</span>
<a name="line-847"></a> <span class="p">{</span>
<a name="line-848"></a> <span class="c1">// hide the progress bar</span>
<a name="line-849"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="o">-&gt;</span><span class="n">setVisible</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-850"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressCancelButton</span><span class="o">-&gt;</span><span class="n">setVisible</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-851"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="o">-&gt;</span><span class="n">setProgressValue</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="o">-&gt;</span><span class="n">progressTotalSteps</span><span class="p">());</span>
<a name="line-852"></a> <span class="p">}</span>
<a name="line-853"></a>
<a name="line-854"></a> <span class="c1">// TODO: disable the worldmapwidget and the images list (at least disable editing operations)</span>
<a name="line-855"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressCancelObject</span> <span class="o">=</span> <span class="n">cancelObject</span><span class="p">;</span>
<a name="line-856"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressCancelSlot</span> <span class="o">=</span> <span class="n">cancelSlot</span><span class="p">;</span>
<a name="line-857"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">uiEnabled</span> <span class="o">=</span> <span class="n">enabledState</span><span class="p">;</span>
<a name="line-858"></a> <span class="n">m_buttons</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">enabledState</span><span class="p">);</span>
<a name="line-859"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">correlatorWidget</span><span class="o">-&gt;</span><span class="n">setUIEnabledExternal</span><span class="p">(</span><span class="n">enabledState</span><span class="p">);</span>
<a name="line-860"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">detailsWidget</span><span class="o">-&gt;</span><span class="n">setUIEnabledExternal</span><span class="p">(</span><span class="n">enabledState</span><span class="p">);</span>
<a name="line-861"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rgWidget</span><span class="o">-&gt;</span><span class="n">setUIEnabled</span><span class="p">(</span><span class="n">enabledState</span><span class="p">);</span>
<a name="line-862"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">treeView</span><span class="o">-&gt;</span><span class="n">setEditEnabled</span><span class="p">(</span><span class="n">enabledState</span><span class="p">);</span>
<a name="line-863"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">listViewContextMenu</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">enabledState</span><span class="p">);</span>
<a name="line-864"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapWidget</span><span class="o">-&gt;</span><span class="n">setAllowModifications</span><span class="p">(</span><span class="n">enabledState</span><span class="p">);</span>
<a name="line-865"></a><span class="p">}</span>
<a name="line-866"></a>
<a name="line-867"></a><span class="kt">void</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">slotSetUIEnabled</span><span class="p">(</span><span class="k">const</span> <span class="kt">bool</span> <span class="n">enabledState</span><span class="p">)</span>
<a name="line-868"></a><span class="p">{</span>
<a name="line-869"></a> <span class="n">slotSetUIEnabled</span><span class="p">(</span><span class="n">enabledState</span><span class="p">,</span> <span class="k">nullptr</span><span class="p">,</span> <span class="n">QString</span><span class="p">());</span>
<a name="line-870"></a><span class="p">}</span>
<a name="line-871"></a>
<a name="line-872"></a><span class="kt">void</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">saveChanges</span><span class="p">(</span><span class="k">const</span> <span class="kt">bool</span> <span class="n">closeAfterwards</span><span class="p">)</span>
<a name="line-873"></a><span class="p">{</span>
<a name="line-874"></a> <span class="c1">// TODO: actually save the changes</span>
<a name="line-875"></a> <span class="c1">// are there any modified images?</span>
<a name="line-876"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QPersistentModelIndex</span><span class="o">&gt;</span> <span class="n">dirtyImages</span><span class="p">;</span>
<a name="line-877"></a>
<a name="line-878"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-879"></a> <span class="p">{</span>
<a name="line-880"></a> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">itemIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-881"></a> <span class="n">GPSItemContainer</span><span class="o">*</span> <span class="k">const</span> <span class="n">item</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="o">-&gt;</span><span class="n">itemFromIndex</span><span class="p">(</span><span class="n">itemIndex</span><span class="p">);</span>
<a name="line-882"></a>
<a name="line-883"></a> <span class="k">if</span> <span class="p">(</span><span class="n">item</span><span class="o">-&gt;</span><span class="n">isDirty</span><span class="p">()</span> <span class="o">||</span> <span class="n">item</span><span class="o">-&gt;</span><span class="n">isTagListDirty</span><span class="p">())</span>
<a name="line-884"></a> <span class="p">{</span>
<a name="line-885"></a> <span class="n">dirtyImages</span> <span class="o">&lt;&lt;</span> <span class="n">itemIndex</span><span class="p">;</span>
<a name="line-886"></a> <span class="p">}</span>
<a name="line-887"></a> <span class="p">}</span>
<a name="line-888"></a>
<a name="line-889"></a> <span class="k">if</span> <span class="p">(</span><span class="n">dirtyImages</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-890"></a> <span class="p">{</span>
<a name="line-891"></a> <span class="k">if</span> <span class="p">(</span><span class="n">closeAfterwards</span><span class="p">)</span>
<a name="line-892"></a> <span class="p">{</span>
<a name="line-893"></a> <span class="n">close</span><span class="p">();</span>
<a name="line-894"></a> <span class="p">}</span>
<a name="line-895"></a>
<a name="line-896"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-897"></a> <span class="p">}</span>
<a name="line-898"></a>
<a name="line-899"></a> <span class="c1">// TODO: disable the UI and provide progress and cancel information</span>
<a name="line-900"></a> <span class="n">slotSetUIEnabled</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-901"></a> <span class="n">slotProgressSetup</span><span class="p">(</span><span class="n">dirtyImages</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Saving changes -&quot;</span><span class="p">));</span>
<a name="line-902"></a>
<a name="line-903"></a> <span class="c1">// initiate the saving</span>
<a name="line-904"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOCountDone</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-905"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOCountTotal</span> <span class="o">=</span> <span class="n">dirtyImages</span><span class="p">.</span><span class="n">count</span><span class="p">();</span>
<a name="line-906"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOCloseAfterSaving</span> <span class="o">=</span> <span class="n">closeAfterwards</span><span class="p">;</span>
<a name="line-907"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOFutureWatcher</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QFutureWatcher</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-908"></a>
<a name="line-909"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOFutureWatcher</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">resultsReadyAt</span><span class="p">(</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
<a name="line-910"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotFileChangesSaved</span><span class="p">(</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)));</span>
<a name="line-911"></a>
<a name="line-912"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOFuture</span> <span class="o">=</span> <span class="n">QtConcurrent</span><span class="o">::</span><span class="n">mapped</span><span class="p">(</span><span class="n">dirtyImages</span><span class="p">,</span> <span class="n">SaveChangedImagesHelper</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="p">));</span>
<a name="line-913"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOFutureWatcher</span><span class="o">-&gt;</span><span class="n">setFuture</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOFuture</span><span class="p">);</span>
<a name="line-914"></a><span class="p">}</span>
<a name="line-915"></a>
<a name="line-916"></a><span class="kt">void</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">slotFileChangesSaved</span><span class="p">(</span><span class="kt">int</span> <span class="n">beginIndex</span><span class="p">,</span> <span class="kt">int</span> <span class="n">endIndex</span><span class="p">)</span>
<a name="line-917"></a><span class="p">{</span>
<a name="line-918"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_DPLUGIN_GENERIC_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">beginIndex</span> <span class="o">&lt;&lt;</span> <span class="n">endIndex</span><span class="p">;</span>
<a name="line-919"></a>
<a name="line-920"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOCountDone</span> <span class="o">+=</span> <span class="p">(</span><span class="n">endIndex</span><span class="o">-</span><span class="n">beginIndex</span><span class="p">);</span>
<a name="line-921"></a> <span class="n">slotProgressChanged</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOCountDone</span><span class="p">);</span>
<a name="line-922"></a>
<a name="line-923"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOCountDone</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOCountTotal</span><span class="p">)</span>
<a name="line-924"></a> <span class="p">{</span>
<a name="line-925"></a> <span class="n">slotSetUIEnabled</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-926"></a>
<a name="line-927"></a> <span class="c1">// any errors?</span>
<a name="line-928"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">errorList</span><span class="p">;</span>
<a name="line-929"></a>
<a name="line-930"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOFuture</span><span class="p">.</span><span class="n">resultCount</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-931"></a> <span class="p">{</span>
<a name="line-932"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOFuture</span><span class="p">.</span><span class="n">resultAt</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">second</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-933"></a> <span class="n">errorList</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOFuture</span><span class="p">.</span><span class="n">resultAt</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
<a name="line-934"></a>
<a name="line-935"></a> <span class="c1">// To rescan item metadata from host.</span>
<a name="line-936"></a> <span class="n">emit</span> <span class="nf">signalMetadataChangedForUrl</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOFuture</span><span class="p">.</span><span class="n">resultAt</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">first</span><span class="p">);</span>
<a name="line-937"></a> <span class="p">}</span>
<a name="line-938"></a>
<a name="line-939"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">errorList</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-940"></a> <span class="p">{</span>
<a name="line-941"></a> <span class="n">QStringList</span> <span class="n">errorStrings</span><span class="p">;</span>
<a name="line-942"></a>
<a name="line-943"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">errorList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-944"></a> <span class="p">{</span>
<a name="line-945"></a> <span class="n">errorStrings</span> <span class="o">&lt;&lt;</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;%1: %2&quot;</span><span class="p">)</span>
<a name="line-946"></a> <span class="p">.</span><span class="n">arg</span><span class="p">(</span><span class="n">errorList</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">first</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">())</span>
<a name="line-947"></a> <span class="p">.</span><span class="n">arg</span><span class="p">(</span><span class="n">errorList</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">second</span><span class="p">);</span>
<a name="line-948"></a> <span class="p">}</span>
<a name="line-949"></a>
<a name="line-950"></a> <span class="n">DMessageBox</span><span class="o">::</span><span class="n">showInformationList</span><span class="p">(</span><span class="n">QMessageBox</span><span class="o">::</span><span class="n">Critical</span><span class="p">,</span>
<a name="line-951"></a> <span class="k">this</span><span class="p">,</span>
<a name="line-952"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Error&quot;</span><span class="p">),</span>
<a name="line-953"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to save some information:&quot;</span><span class="p">),</span>
<a name="line-954"></a> <span class="n">errorStrings</span><span class="p">);</span>
<a name="line-955"></a> <span class="p">}</span>
<a name="line-956"></a>
<a name="line-957"></a> <span class="c1">// done saving files</span>
<a name="line-958"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fileIOCloseAfterSaving</span><span class="p">)</span>
<a name="line-959"></a> <span class="p">{</span>
<a name="line-960"></a> <span class="n">close</span><span class="p">();</span>
<a name="line-961"></a> <span class="p">}</span>
<a name="line-962"></a> <span class="p">}</span>
<a name="line-963"></a><span class="p">}</span>
<a name="line-964"></a>
<a name="line-965"></a><span class="kt">void</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">slotApplyClicked</span><span class="p">()</span>
<a name="line-966"></a><span class="p">{</span>
<a name="line-967"></a> <span class="c1">// save the changes, but do not close afterwards</span>
<a name="line-968"></a> <span class="n">saveChanges</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-969"></a><span class="p">}</span>
<a name="line-970"></a>
<a name="line-971"></a><span class="kt">void</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">slotProgressChanged</span><span class="p">(</span><span class="k">const</span> <span class="kt">int</span> <span class="n">currentProgress</span><span class="p">)</span>
<a name="line-972"></a><span class="p">{</span>
<a name="line-973"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="o">-&gt;</span><span class="n">setProgressValue</span><span class="p">(</span><span class="n">currentProgress</span><span class="p">);</span>
<a name="line-974"></a><span class="p">}</span>
<a name="line-975"></a>
<a name="line-976"></a><span class="kt">void</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">slotProgressSetup</span><span class="p">(</span><span class="k">const</span> <span class="kt">int</span> <span class="n">maxProgress</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">progressText</span><span class="p">)</span>
<a name="line-977"></a><span class="p">{</span>
<a name="line-978"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="o">-&gt;</span><span class="n">setProgressText</span><span class="p">(</span><span class="n">progressText</span><span class="p">);</span>
<a name="line-979"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="o">-&gt;</span><span class="n">setProgressTotalSteps</span><span class="p">(</span><span class="n">maxProgress</span><span class="p">);</span>
<a name="line-980"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="o">-&gt;</span><span class="n">setProgressValue</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<a name="line-981"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="o">-&gt;</span><span class="n">setNotify</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-982"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="o">-&gt;</span><span class="n">setNotificationTitle</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Edit Geolocation&quot;</span><span class="p">),</span> <span class="n">QIcon</span><span class="o">::</span><span class="n">fromTheme</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;globe&quot;</span><span class="p">)));</span>
<a name="line-983"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="o">-&gt;</span><span class="n">setVisible</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-984"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressCancelButton</span><span class="o">-&gt;</span><span class="n">setVisible</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">progressCancelObject</span> <span class="o">!=</span> <span class="k">nullptr</span><span class="p">);</span>
<a name="line-985"></a><span class="p">}</span>
<a name="line-986"></a>
<a name="line-987"></a><span class="kt">void</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">slotGPSUndoCommand</span><span class="p">(</span><span class="n">GPSUndoCommand</span><span class="o">*</span> <span class="n">undoCommand</span><span class="p">)</span>
<a name="line-988"></a><span class="p">{</span>
<a name="line-989"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">undoStack</span><span class="o">-&gt;</span><span class="n">push</span><span class="p">(</span><span class="n">undoCommand</span><span class="p">);</span>
<a name="line-990"></a><span class="p">}</span>
<a name="line-991"></a>
<a name="line-992"></a><span class="kt">void</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">slotSortOptionTriggered</span><span class="p">(</span><span class="n">QAction</span><span class="o">*</span> <span class="cm">/*sortAction*/</span><span class="p">)</span>
<a name="line-993"></a><span class="p">{</span>
<a name="line-994"></a> <span class="kt">int</span> <span class="n">newSortKey</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-995"></a>
<a name="line-996"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sortActionOldestFirst</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
<a name="line-997"></a> <span class="p">{</span>
<a name="line-998"></a> <span class="n">newSortKey</span> <span class="o">|=</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-999"></a> <span class="p">}</span>
<a name="line-1000"></a>
<a name="line-1001"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapWidget</span><span class="o">-&gt;</span><span class="n">setSortKey</span><span class="p">(</span><span class="n">newSortKey</span><span class="p">);</span>
<a name="line-1002"></a><span class="p">}</span>
<a name="line-1003"></a>
<a name="line-1004"></a><span class="kt">void</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">slotProgressCancelButtonClicked</span><span class="p">()</span>
<a name="line-1005"></a><span class="p">{</span>
<a name="line-1006"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">progressCancelObject</span><span class="p">)</span>
<a name="line-1007"></a> <span class="p">{</span>
<a name="line-1008"></a> <span class="n">QTimer</span><span class="o">::</span><span class="n">singleShot</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressCancelObject</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressCancelSlot</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
<a name="line-1009"></a>
<a name="line-1010"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="o">-&gt;</span><span class="n">setProgressValue</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="o">-&gt;</span><span class="n">progressTotalSteps</span><span class="p">());</span>
<a name="line-1011"></a> <span class="p">}</span>
<a name="line-1012"></a><span class="p">}</span>
<a name="line-1013"></a>
<a name="line-1014"></a><span class="kt">void</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">slotBookmarkVisibilityToggled</span><span class="p">()</span>
<a name="line-1015"></a><span class="p">{</span>
<a name="line-1016"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bookmarkOwner</span><span class="o">-&gt;</span><span class="n">bookmarkModelHelper</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">setVisible</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionBookmarkVisibility</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-1017"></a><span class="p">}</span>
<a name="line-1018"></a>
<a name="line-1019"></a><span class="kt">void</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">slotLayoutChanged</span><span class="p">(</span><span class="kt">int</span> <span class="n">lay</span><span class="p">)</span>
<a name="line-1020"></a><span class="p">{</span>
<a name="line-1021"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapLayout</span> <span class="o">=</span> <span class="p">(</span><span class="n">MapLayout</span><span class="p">)</span><span class="n">lay</span><span class="p">;</span>
<a name="line-1022"></a> <span class="n">adjustMapLayout</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-1023"></a><span class="p">}</span>
<a name="line-1024"></a>
<a name="line-1025"></a><span class="n">MapWidget</span><span class="o">*</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">makeMapWidget</span><span class="p">(</span><span class="n">QWidget</span><span class="o">**</span> <span class="k">const</span> <span class="n">pvbox</span><span class="p">)</span>
<a name="line-1026"></a><span class="p">{</span>
<a name="line-1027"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">dummyWidget</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QWidget</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-1028"></a> <span class="n">QVBoxLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">vbox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QVBoxLayout</span><span class="p">(</span><span class="n">dummyWidget</span><span class="p">);</span>
<a name="line-1029"></a> <span class="n">MapWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">mapWidget</span> <span class="o">=</span> <span class="k">new</span> <span class="n">MapWidget</span><span class="p">(</span><span class="n">dummyWidget</span><span class="p">);</span>
<a name="line-1030"></a> <span class="n">mapWidget</span><span class="o">-&gt;</span><span class="n">setAvailableMouseModes</span><span class="p">(</span><span class="n">MouseModePan</span> <span class="o">|</span> <span class="n">MouseModeZoomIntoGroup</span> <span class="o">|</span> <span class="n">MouseModeSelectThumbnail</span><span class="p">);</span>
<a name="line-1031"></a> <span class="n">mapWidget</span><span class="o">-&gt;</span><span class="n">setVisibleMouseModes</span><span class="p">(</span><span class="n">MouseModePan</span> <span class="o">|</span> <span class="n">MouseModeZoomIntoGroup</span> <span class="o">|</span> <span class="n">MouseModeSelectThumbnail</span><span class="p">);</span>
<a name="line-1032"></a> <span class="n">mapWidget</span><span class="o">-&gt;</span><span class="n">setMouseMode</span><span class="p">(</span><span class="n">MouseModeSelectThumbnail</span><span class="p">);</span>
<a name="line-1033"></a> <span class="n">mapWidget</span><span class="o">-&gt;</span><span class="n">setGroupedModel</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">geoifaceMarkerModel</span><span class="p">);</span>
<a name="line-1034"></a> <span class="n">mapWidget</span><span class="o">-&gt;</span><span class="n">setDragDropHandler</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mapDragDropHandler</span><span class="p">);</span>
<a name="line-1035"></a> <span class="n">mapWidget</span><span class="o">-&gt;</span><span class="n">addUngroupedModel</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">bookmarkOwner</span><span class="o">-&gt;</span><span class="n">bookmarkModelHelper</span><span class="p">());</span>
<a name="line-1036"></a> <span class="n">mapWidget</span><span class="o">-&gt;</span><span class="n">addUngroupedModel</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">searchWidget</span><span class="o">-&gt;</span><span class="n">getModelHelper</span><span class="p">());</span>
<a name="line-1037"></a> <span class="n">mapWidget</span><span class="o">-&gt;</span><span class="n">setTrackManager</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">trackManager</span><span class="p">);</span>
<a name="line-1038"></a> <span class="n">mapWidget</span><span class="o">-&gt;</span><span class="n">setSortOptionsMenu</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sortMenu</span><span class="p">);</span>
<a name="line-1039"></a>
<a name="line-1040"></a> <span class="n">vbox</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">mapWidget</span><span class="p">);</span>
<a name="line-1041"></a> <span class="n">vbox</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">mapWidget</span><span class="o">-&gt;</span><span class="n">getControlWidget</span><span class="p">());</span>
<a name="line-1042"></a>
<a name="line-1043"></a> <span class="n">QToolButton</span><span class="o">*</span> <span class="k">const</span> <span class="n">bookmarkVisibilityButton</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QToolButton</span><span class="p">(</span><span class="n">mapWidget</span><span class="p">);</span>
<a name="line-1044"></a> <span class="n">bookmarkVisibilityButton</span><span class="o">-&gt;</span><span class="n">setDefaultAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionBookmarkVisibility</span><span class="p">);</span>
<a name="line-1045"></a> <span class="n">mapWidget</span><span class="o">-&gt;</span><span class="n">addWidgetToControlWidget</span><span class="p">(</span><span class="n">bookmarkVisibilityButton</span><span class="p">);</span>
<a name="line-1046"></a>
<a name="line-1047"></a> <span class="o">*</span><span class="n">pvbox</span> <span class="o">=</span> <span class="n">dummyWidget</span><span class="p">;</span>
<a name="line-1048"></a>
<a name="line-1049"></a> <span class="k">return</span> <span class="n">mapWidget</span><span class="p">;</span>
<a name="line-1050"></a><span class="p">}</span>
<a name="line-1051"></a>
<a name="line-1052"></a><span class="kt">void</span> <span class="n">GeolocationEdit</span><span class="o">::</span><span class="n">adjustMapLayout</span><span class="p">(</span><span class="k">const</span> <span class="kt">bool</span> <span class="n">syncSettings</span><span class="p">)</span>
<a name="line-1053"></a><span class="p">{</span>
<a name="line-1054"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mapLayout</span> <span class="o">==</span> <span class="n">MapLayoutOne</span><span class="p">)</span>
<a name="line-1055"></a> <span class="p">{</span>
<a name="line-1056"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mapSplitter</span><span class="o">-&gt;</span><span class="n">count</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span>
<a name="line-1057"></a> <span class="p">{</span>
<a name="line-1058"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapSplitter</span><span class="o">-&gt;</span><span class="n">widget</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<a name="line-1059"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapWidget2</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-1060"></a> <span class="p">}</span>
<a name="line-1061"></a> <span class="p">}</span>
<a name="line-1062"></a> <span class="k">else</span>
<a name="line-1063"></a> <span class="p">{</span>
<a name="line-1064"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mapSplitter</span><span class="o">-&gt;</span><span class="n">count</span><span class="p">()</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span>
<a name="line-1065"></a> <span class="p">{</span>
<a name="line-1066"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="n">mapHolder</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-1067"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapWidget2</span> <span class="o">=</span> <span class="n">makeMapWidget</span><span class="p">(</span><span class="o">&amp;</span><span class="n">mapHolder</span><span class="p">);</span>
<a name="line-1068"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapSplitter</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">mapHolder</span><span class="p">);</span>
<a name="line-1069"></a>
<a name="line-1070"></a> <span class="k">if</span> <span class="p">(</span><span class="n">syncSettings</span><span class="p">)</span>
<a name="line-1071"></a> <span class="p">{</span>
<a name="line-1072"></a> <span class="n">KSharedConfig</span><span class="o">::</span><span class="n">Ptr</span> <span class="n">config</span> <span class="o">=</span> <span class="n">KSharedConfig</span><span class="o">::</span><span class="n">openConfig</span><span class="p">();</span>
<a name="line-1073"></a> <span class="n">KConfigGroup</span> <span class="n">group</span> <span class="o">=</span> <span class="n">config</span><span class="o">-&gt;</span><span class="n">group</span><span class="p">(</span><span class="s">&quot;Geolocation Edit Settings&quot;</span><span class="p">);</span>
<a name="line-1074"></a> <span class="k">const</span> <span class="n">KConfigGroup</span> <span class="n">groupMapWidget</span> <span class="o">=</span> <span class="n">KConfigGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">group</span><span class="p">,</span> <span class="s">&quot;Map Widget&quot;</span><span class="p">);</span>
<a name="line-1075"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapWidget2</span><span class="o">-&gt;</span><span class="n">readSettingsFromGroup</span><span class="p">(</span><span class="o">&amp;</span><span class="n">groupMapWidget</span><span class="p">);</span>
<a name="line-1076"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapWidget2</span><span class="o">-&gt;</span><span class="n">setActive</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-1077"></a> <span class="p">}</span>
<a name="line-1078"></a> <span class="p">}</span>
<a name="line-1079"></a>
<a name="line-1080"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mapLayout</span> <span class="o">==</span> <span class="n">MapLayoutHorizontal</span><span class="p">)</span>
<a name="line-1081"></a> <span class="p">{</span>
<a name="line-1082"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapSplitter</span><span class="o">-&gt;</span><span class="n">setOrientation</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">);</span>
<a name="line-1083"></a> <span class="p">}</span>
<a name="line-1084"></a> <span class="k">else</span>
<a name="line-1085"></a> <span class="p">{</span>
<a name="line-1086"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapSplitter</span><span class="o">-&gt;</span><span class="n">setOrientation</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">Vertical</span><span class="p">);</span>
<a name="line-1087"></a> <span class="p">}</span>
<a name="line-1088"></a> <span class="p">}</span>
<a name="line-1089"></a><span class="p">}</span>
<a name="line-1090"></a>
<a name="line-1091"></a><span class="p">}</span> <span class="c1">// namespace DigikamGenericGeolocationEditPlugin</span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/1.html b/static/reports/cppcheck/master/1.html
index 80fe06554..e9851715f 100644
--- a/static/reports/cppcheck/master/1.html
+++ b/static/reports/cppcheck/master/1.html
@@ -1,1575 +1,1575 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/dplugins/generic/metadata/metadataedit/iptc/iptcorigin.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/dplugins/generic/metadata/metadataedit/iptc/iptcorigin.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> iptcorigin.cpp</p>
<a href='1.html#line-435'> shadowVar 435</a><a href='1.html#line-522'> shadowVar 522</a>
</div>
<div id="content">
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
<a name="line-6"></a><span class="cm"> * Date : 2006-10-13</span>
<a name="line-7"></a><span class="cm"> * Description : IPTC origin settings page.</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2006-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&gt;</span>
<a name="line-10"></a><span class="cm"> *</span>
<a name="line-11"></a><span class="cm"> * This program is free software; you can redistribute it</span>
<a name="line-12"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
<a name="line-13"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
<a name="line-14"></a><span class="cm"> * either version 2, or (at your option) any later version.</span>
<a name="line-15"></a><span class="cm"> *</span>
<a name="line-16"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
<a name="line-17"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="line-18"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
<a name="line-19"></a><span class="cm"> * GNU General Public License for more details.</span>
<a name="line-20"></a><span class="cm"> *</span>
<a name="line-21"></a><span class="cm"> * ============================================================ */</span>
<a name="line-22"></a>
<a name="line-23"></a><span class="cp">#include</span> <span class="cpf">&quot;iptcorigin.h&quot;</span><span class="cp"></span>
<a name="line-24"></a>
<a name="line-25"></a><span class="c1">// Qt includes</span>
<a name="line-26"></a>
<a name="line-27"></a><span class="cp">#include</span> <span class="cpf">&lt;QCheckBox&gt;</span><span class="cp"></span>
<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;QLabel&gt;</span><span class="cp"></span>
<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QMap&gt;</span><span class="cp"></span>
<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QPushButton&gt;</span><span class="cp"></span>
<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QTimeEdit&gt;</span><span class="cp"></span>
<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QValidator&gt;</span><span class="cp"></span>
<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QGridLayout&gt;</span><span class="cp"></span>
<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QApplication&gt;</span><span class="cp"></span>
<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QStyle&gt;</span><span class="cp"></span>
<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QComboBox&gt;</span><span class="cp"></span>
<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&lt;QDateEdit&gt;</span><span class="cp"></span>
<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&lt;QLineEdit&gt;</span><span class="cp"></span>
<a name="line-39"></a>
<a name="line-40"></a><span class="c1">// KDE includes</span>
<a name="line-41"></a>
<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
<a name="line-43"></a>
<a name="line-44"></a><span class="c1">// Local includes</span>
<a name="line-45"></a>
<a name="line-46"></a><span class="cp">#include</span> <span class="cpf">&quot;dlayoutbox.h&quot;</span><span class="cp"></span>
<a name="line-47"></a><span class="cp">#include</span> <span class="cpf">&quot;squeezedcombobox.h&quot;</span><span class="cp"></span>
<a name="line-48"></a><span class="cp">#include</span> <span class="cpf">&quot;metadatacheckbox.h&quot;</span><span class="cp"></span>
<a name="line-49"></a><span class="cp">#include</span> <span class="cpf">&quot;timezonecombobox.h&quot;</span><span class="cp"></span>
<a name="line-50"></a><span class="cp">#include</span> <span class="cpf">&quot;multivaluesedit.h&quot;</span><span class="cp"></span>
<a name="line-51"></a><span class="cp">#include</span> <span class="cpf">&quot;dmetadata.h&quot;</span><span class="cp"></span>
<a name="line-52"></a><span class="cp">#include</span> <span class="cpf">&quot;countryselector.h&quot;</span><span class="cp"></span>
<a name="line-53"></a><span class="cp">#include</span> <span class="cpf">&quot;dexpanderbox.h&quot;</span><span class="cp"></span>
<a name="line-54"></a>
<a name="line-55"></a><span class="k">using</span> <span class="k">namespace</span> <span class="n">Digikam</span><span class="p">;</span>
<a name="line-56"></a>
<a name="line-57"></a><span class="k">namespace</span> <span class="n">DigikamGenericMetadataEditPlugin</span>
<a name="line-58"></a><span class="p">{</span>
<a name="line-59"></a>
<a name="line-60"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">IPTCOrigin</span><span class="o">::</span><span class="n">Private</span>
<a name="line-61"></a><span class="p">{</span>
<a name="line-62"></a><span class="k">public</span><span class="o">:</span>
<a name="line-63"></a>
<a name="line-64"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
<a name="line-65"></a> <span class="p">{</span>
<a name="line-66"></a> <span class="n">cityEdit</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-67"></a> <span class="n">sublocationEdit</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-68"></a> <span class="n">provinceEdit</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-69"></a> <span class="n">locationEdit</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-70"></a> <span class="n">cityCheck</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-71"></a> <span class="n">sublocationCheck</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-72"></a> <span class="n">provinceCheck</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-73"></a> <span class="n">countryCheck</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-74"></a> <span class="n">dateCreatedSel</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-75"></a> <span class="n">dateDigitalizedSel</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-76"></a> <span class="n">timeCreatedSel</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-77"></a> <span class="n">timeDigitalizedSel</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-78"></a> <span class="n">zoneCreatedSel</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-79"></a> <span class="n">zoneDigitalizedSel</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-80"></a> <span class="n">dateCreatedCheck</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-81"></a> <span class="n">dateDigitalizedCheck</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-82"></a> <span class="n">timeCreatedCheck</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-83"></a> <span class="n">timeDigitalizedCheck</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-84"></a> <span class="n">syncEXIFDateCheck</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-85"></a> <span class="n">setTodayCreatedBtn</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-86"></a> <span class="n">setTodayDigitalizedBtn</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-87"></a> <span class="n">countryCB</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-88"></a> <span class="p">}</span>
<a name="line-89"></a>
<a name="line-90"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">dateCreatedCheck</span><span class="p">;</span>
<a name="line-91"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">dateDigitalizedCheck</span><span class="p">;</span>
<a name="line-92"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">timeCreatedCheck</span><span class="p">;</span>
<a name="line-93"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">timeDigitalizedCheck</span><span class="p">;</span>
<a name="line-94"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">syncEXIFDateCheck</span><span class="p">;</span>
<a name="line-95"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">cityCheck</span><span class="p">;</span>
<a name="line-96"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">sublocationCheck</span><span class="p">;</span>
<a name="line-97"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">provinceCheck</span><span class="p">;</span>
<a name="line-98"></a>
<a name="line-99"></a> <span class="n">QTimeEdit</span><span class="o">*</span> <span class="n">timeCreatedSel</span><span class="p">;</span>
<a name="line-100"></a> <span class="n">QTimeEdit</span><span class="o">*</span> <span class="n">timeDigitalizedSel</span><span class="p">;</span>
<a name="line-101"></a>
<a name="line-102"></a> <span class="n">TimeZoneComboBox</span><span class="o">*</span> <span class="n">zoneCreatedSel</span><span class="p">;</span>
<a name="line-103"></a> <span class="n">TimeZoneComboBox</span><span class="o">*</span> <span class="n">zoneDigitalizedSel</span><span class="p">;</span>
<a name="line-104"></a>
<a name="line-105"></a> <span class="n">QPushButton</span><span class="o">*</span> <span class="n">setTodayCreatedBtn</span><span class="p">;</span>
<a name="line-106"></a> <span class="n">QPushButton</span><span class="o">*</span> <span class="n">setTodayDigitalizedBtn</span><span class="p">;</span>
<a name="line-107"></a>
<a name="line-108"></a> <span class="n">QDateEdit</span><span class="o">*</span> <span class="n">dateCreatedSel</span><span class="p">;</span>
<a name="line-109"></a> <span class="n">QDateEdit</span><span class="o">*</span> <span class="n">dateDigitalizedSel</span><span class="p">;</span>
<a name="line-110"></a>
<a name="line-111"></a> <span class="n">QLineEdit</span><span class="o">*</span> <span class="n">cityEdit</span><span class="p">;</span>
<a name="line-112"></a> <span class="n">QLineEdit</span><span class="o">*</span> <span class="n">sublocationEdit</span><span class="p">;</span>
<a name="line-113"></a> <span class="n">QLineEdit</span><span class="o">*</span> <span class="n">provinceEdit</span><span class="p">;</span>
<a name="line-114"></a>
<a name="line-115"></a> <span class="n">MultiValuesEdit</span><span class="o">*</span> <span class="n">locationEdit</span><span class="p">;</span>
<a name="line-116"></a>
<a name="line-117"></a> <span class="n">MetadataCheckBox</span><span class="o">*</span> <span class="n">countryCheck</span><span class="p">;</span>
<a name="line-118"></a>
<a name="line-119"></a> <span class="n">CountrySelector</span><span class="o">*</span> <span class="n">countryCB</span><span class="p">;</span>
<a name="line-120"></a><span class="p">};</span>
<a name="line-121"></a>
<a name="line-122"></a><span class="n">IPTCOrigin</span><span class="o">::</span><span class="n">IPTCOrigin</span><span class="p">(</span><span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span><span class="p">)</span>
<a name="line-123"></a> <span class="o">:</span> <span class="n">QWidget</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span>
<a name="line-124"></a> <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">Private</span><span class="p">)</span>
<a name="line-125"></a><span class="p">{</span>
<a name="line-126"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">grid</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-127"></a>
<a name="line-128"></a> <span class="c1">// IPTC only accept printable Ascii char.</span>
<a name="line-129"></a> <span class="n">QRegExp</span> <span class="nf">asciiRx</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;[</span><span class="se">\x20</span><span class="s">-</span><span class="se">\x7F</span><span class="s">]+$&quot;</span><span class="p">));</span>
<a name="line-130"></a> <span class="n">QValidator</span><span class="o">*</span> <span class="k">const</span> <span class="n">asciiValidator</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QRegExpValidator</span><span class="p">(</span><span class="n">asciiRx</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
<a name="line-131"></a>
<a name="line-132"></a> <span class="n">QString</span> <span class="n">dateFormat</span> <span class="o">=</span> <span class="n">QLocale</span><span class="p">().</span><span class="n">dateFormat</span><span class="p">(</span><span class="n">QLocale</span><span class="o">::</span><span class="n">ShortFormat</span><span class="p">);</span>
<a name="line-133"></a>
<a name="line-134"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">dateFormat</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yyyy&quot;</span><span class="p">)))</span>
<a name="line-135"></a> <span class="p">{</span>
<a name="line-136"></a> <span class="n">dateFormat</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yy&quot;</span><span class="p">),</span>
<a name="line-137"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yyyy&quot;</span><span class="p">));</span>
<a name="line-138"></a> <span class="p">}</span>
<a name="line-139"></a>
<a name="line-140"></a> <span class="n">QString</span> <span class="n">timeFormat</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;hh:mm:ss&quot;</span><span class="p">);</span>
<a name="line-141"></a>
<a name="line-142"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-143"></a>
<a name="line-144"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateDigitalizedCheck</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Digitization date&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
<a name="line-145"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeDigitalizedCheck</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Digitization time&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
<a name="line-146"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoneDigitalizedSel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TimeZoneComboBox</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-147"></a>
<a name="line-148"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateDigitalizedSel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QDateEdit</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-149"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateDigitalizedSel</span><span class="o">-&gt;</span><span class="n">setDisplayFormat</span><span class="p">(</span><span class="n">dateFormat</span><span class="p">);</span>
<a name="line-150"></a>
<a name="line-151"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeDigitalizedSel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QTimeEdit</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-152"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeDigitalizedSel</span><span class="o">-&gt;</span><span class="n">setDisplayFormat</span><span class="p">(</span><span class="n">timeFormat</span><span class="p">);</span>
<a name="line-153"></a>
<a name="line-154"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">setTodayDigitalizedBtn</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QPushButton</span><span class="p">();</span>
<a name="line-155"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">setTodayDigitalizedBtn</span><span class="o">-&gt;</span><span class="n">setIcon</span><span class="p">(</span><span class="n">QIcon</span><span class="o">::</span><span class="n">fromTheme</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;go-jump-today&quot;</span><span class="p">)));</span>
<a name="line-156"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">setTodayDigitalizedBtn</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Set digitization date to today&quot;</span><span class="p">));</span>
<a name="line-157"></a>
<a name="line-158"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateDigitalizedSel</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Set here the creation date of &quot;</span>
<a name="line-159"></a> <span class="s">&quot;digital representation.&quot;</span><span class="p">));</span>
<a name="line-160"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeDigitalizedSel</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Set here the creation time of &quot;</span>
<a name="line-161"></a> <span class="s">&quot;digital representation.&quot;</span><span class="p">));</span>
<a name="line-162"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoneDigitalizedSel</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Set here the time zone of &quot;</span>
<a name="line-163"></a> <span class="s">&quot;digital representation.&quot;</span><span class="p">));</span>
<a name="line-164"></a>
<a name="line-165"></a> <span class="n">slotSetTodayDigitalized</span><span class="p">();</span>
<a name="line-166"></a>
<a name="line-167"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-168"></a>
<a name="line-169"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateCreatedCheck</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Creation date&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
<a name="line-170"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeCreatedCheck</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Creation time&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
<a name="line-171"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoneCreatedSel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TimeZoneComboBox</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-172"></a>
<a name="line-173"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateCreatedSel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QDateEdit</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-174"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateCreatedSel</span><span class="o">-&gt;</span><span class="n">setDisplayFormat</span><span class="p">(</span><span class="n">dateFormat</span><span class="p">);</span>
<a name="line-175"></a>
<a name="line-176"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeCreatedSel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QTimeEdit</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-177"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeCreatedSel</span><span class="o">-&gt;</span><span class="n">setDisplayFormat</span><span class="p">(</span><span class="n">timeFormat</span><span class="p">);</span>
<a name="line-178"></a>
<a name="line-179"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">syncEXIFDateCheck</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Sync EXIF creation date&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
<a name="line-180"></a>
<a name="line-181"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">setTodayCreatedBtn</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QPushButton</span><span class="p">();</span>
<a name="line-182"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">setTodayCreatedBtn</span><span class="o">-&gt;</span><span class="n">setIcon</span><span class="p">(</span><span class="n">QIcon</span><span class="o">::</span><span class="n">fromTheme</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;go-jump-today&quot;</span><span class="p">)));</span>
<a name="line-183"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">setTodayCreatedBtn</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Set creation date to today&quot;</span><span class="p">));</span>
<a name="line-184"></a>
<a name="line-185"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateCreatedSel</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Set here the creation date of &quot;</span>
<a name="line-186"></a> <span class="s">&quot;intellectual content.&quot;</span><span class="p">));</span>
<a name="line-187"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeCreatedSel</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Set here the creation time of &quot;</span>
<a name="line-188"></a> <span class="s">&quot;intellectual content.&quot;</span><span class="p">));</span>
<a name="line-189"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoneCreatedSel</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Set here the time zone of &quot;</span>
<a name="line-190"></a> <span class="s">&quot;intellectual content.&quot;</span><span class="p">));</span>
<a name="line-191"></a>
<a name="line-192"></a> <span class="n">slotSetTodayCreated</span><span class="p">();</span>
<a name="line-193"></a>
<a name="line-194"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-195"></a>
<a name="line-196"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">locationEdit</span> <span class="o">=</span> <span class="k">new</span> <span class="n">MultiValuesEdit</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Location:&quot;</span><span class="p">),</span>
<a name="line-197"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Set here the full country name referenced by the content.&quot;</span><span class="p">));</span>
<a name="line-198"></a>
<a name="line-199"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-200"></a>
<a name="line-201"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cityCheck</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;City:&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
<a name="line-202"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cityEdit</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLineEdit</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-203"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cityEdit</span><span class="o">-&gt;</span><span class="n">setClearButtonEnabled</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-204"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cityEdit</span><span class="o">-&gt;</span><span class="n">setValidator</span><span class="p">(</span><span class="n">asciiValidator</span><span class="p">);</span>
<a name="line-205"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cityEdit</span><span class="o">-&gt;</span><span class="n">setMaxLength</span><span class="p">(</span><span class="mi">32</span><span class="p">);</span>
<a name="line-206"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cityEdit</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Set here the city of content origin. &quot;</span>
<a name="line-207"></a> <span class="s">&quot;This field is limited to 32 ASCII characters.&quot;</span><span class="p">));</span>
<a name="line-208"></a>
<a name="line-209"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-210"></a>
<a name="line-211"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sublocationCheck</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Sublocation:&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
<a name="line-212"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sublocationEdit</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLineEdit</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-213"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sublocationEdit</span><span class="o">-&gt;</span><span class="n">setClearButtonEnabled</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-214"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sublocationEdit</span><span class="o">-&gt;</span><span class="n">setValidator</span><span class="p">(</span><span class="n">asciiValidator</span><span class="p">);</span>
<a name="line-215"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sublocationEdit</span><span class="o">-&gt;</span><span class="n">setMaxLength</span><span class="p">(</span><span class="mi">32</span><span class="p">);</span>
<a name="line-216"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sublocationEdit</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Set here the content location within city. &quot;</span>
<a name="line-217"></a> <span class="s">&quot;This field is limited to 32 ASCII characters.&quot;</span><span class="p">));</span>
<a name="line-218"></a>
<a name="line-219"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-220"></a>
<a name="line-221"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">provinceCheck</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;State/Province:&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
<a name="line-222"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">provinceEdit</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLineEdit</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-223"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">provinceEdit</span><span class="o">-&gt;</span><span class="n">setClearButtonEnabled</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-224"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">provinceEdit</span><span class="o">-&gt;</span><span class="n">setValidator</span><span class="p">(</span><span class="n">asciiValidator</span><span class="p">);</span>
<a name="line-225"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">provinceEdit</span><span class="o">-&gt;</span><span class="n">setMaxLength</span><span class="p">(</span><span class="mi">32</span><span class="p">);</span>
<a name="line-226"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">provinceEdit</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Set here the Province or State of content origin. &quot;</span>
<a name="line-227"></a> <span class="s">&quot;This field is limited to 32 ASCII characters.&quot;</span><span class="p">));</span>
<a name="line-228"></a>
<a name="line-229"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-230"></a>
<a name="line-231"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCheck</span> <span class="o">=</span> <span class="k">new</span> <span class="n">MetadataCheckBox</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Country:&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
<a name="line-232"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCB</span> <span class="o">=</span> <span class="k">new</span> <span class="n">CountrySelector</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-233"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCB</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Select here country name of content origin.&quot;</span><span class="p">));</span>
<a name="line-234"></a> <span class="c1">// Remove 2 last items for the list (separator + Unknown item)</span>
<a name="line-235"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCB</span><span class="o">-&gt;</span><span class="n">removeItem</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCB</span><span class="o">-&gt;</span><span class="n">count</span><span class="p">()</span><span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<a name="line-236"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCB</span><span class="o">-&gt;</span><span class="n">removeItem</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCB</span><span class="o">-&gt;</span><span class="n">count</span><span class="p">()</span><span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<a name="line-237"></a>
<a name="line-238"></a> <span class="n">QStringList</span> <span class="n">list</span><span class="p">;</span>
<a name="line-239"></a>
<a name="line-240"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCB</span><span class="o">-&gt;</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-241"></a> <span class="n">list</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCB</span><span class="o">-&gt;</span><span class="n">itemText</span><span class="p">(</span><span class="n">i</span><span class="p">));</span>
<a name="line-242"></a>
<a name="line-243"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">locationEdit</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">list</span><span class="p">);</span>
<a name="line-244"></a>
<a name="line-245"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-246"></a>
<a name="line-247"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">note</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;b&gt;Note: &quot;</span>
<a name="line-248"></a> <span class="s">&quot;&lt;b&gt;&lt;a href=&#39;https://en.wikipedia.org/wiki/IPTC_Information_Interchange_Model&#39;&gt;IPTC&lt;/a&gt;&lt;/b&gt; &quot;</span>
<a name="line-249"></a> <span class="s">&quot;text tags only support the printable &quot;</span>
<a name="line-250"></a> <span class="s">&quot;&lt;b&gt;&lt;a href=&#39;https://en.wikipedia.org/wiki/Ascii&#39;&gt;ASCII&lt;/a&gt;&lt;/b&gt; &quot;</span>
<a name="line-251"></a> <span class="s">&quot;characters and limit string sizes. &quot;</span>
<a name="line-252"></a> <span class="s">&quot;Use contextual help for details.&lt;/b&gt;&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
<a name="line-253"></a> <span class="n">note</span><span class="o">-&gt;</span><span class="n">setOpenExternalLinks</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-254"></a> <span class="n">note</span><span class="o">-&gt;</span><span class="n">setWordWrap</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-255"></a> <span class="n">note</span><span class="o">-&gt;</span><span class="n">setFrameStyle</span><span class="p">(</span><span class="n">QFrame</span><span class="o">::</span><span class="n">StyledPanel</span> <span class="o">|</span> <span class="n">QFrame</span><span class="o">::</span><span class="n">Raised</span><span class="p">);</span>
<a name="line-256"></a>
<a name="line-257"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-258"></a>
<a name="line-259"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dateDigitalizedCheck</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
<a name="line-260"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">timeDigitalizedCheck</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
<a name="line-261"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dateDigitalizedSel</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
<a name="line-262"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">timeDigitalizedSel</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-263"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">zoneDigitalizedSel</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-264"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">setTodayDigitalizedBtn</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-265"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dateCreatedCheck</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
<a name="line-266"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">timeCreatedCheck</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
<a name="line-267"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dateCreatedSel</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
<a name="line-268"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">timeCreatedSel</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-269"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">zoneCreatedSel</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-270"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">setTodayCreatedBtn</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-271"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">syncEXIFDateCheck</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">6</span><span class="p">);</span>
<a name="line-272"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">locationEdit</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">6</span><span class="p">);</span>
<a name="line-273"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="k">new</span> <span class="n">DLineWidget</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="k">this</span><span class="p">),</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">6</span><span class="p">);</span>
<a name="line-274"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cityCheck</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-275"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cityEdit</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">5</span><span class="p">);</span>
<a name="line-276"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sublocationCheck</span><span class="p">,</span> <span class="mi">9</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-277"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sublocationEdit</span><span class="p">,</span> <span class="mi">9</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">5</span><span class="p">);</span>
<a name="line-278"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">provinceCheck</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-279"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">provinceEdit</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">5</span><span class="p">);</span>
<a name="line-280"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCheck</span><span class="p">,</span> <span class="mi">11</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-281"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCB</span><span class="p">,</span> <span class="mi">11</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">5</span><span class="p">);</span>
<a name="line-282"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">note</span><span class="p">,</span> <span class="mi">12</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">6</span><span class="p">);</span>
<a name="line-283"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">setColumnStretch</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
<a name="line-284"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">setRowStretch</span><span class="p">(</span><span class="mi">13</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
<a name="line-285"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">setContentsMargins</span><span class="p">(</span><span class="n">QMargins</span><span class="p">());</span>
<a name="line-286"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">setSpacing</span><span class="p">(</span><span class="n">QApplication</span><span class="o">::</span><span class="n">style</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">pixelMetric</span><span class="p">(</span><span class="n">QStyle</span><span class="o">::</span><span class="n">PM_DefaultLayoutSpacing</span><span class="p">));</span>
<a name="line-287"></a>
<a name="line-288"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-289"></a>
<a name="line-290"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dateCreatedCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-291"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateCreatedSel</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
<a name="line-292"></a>
<a name="line-293"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dateDigitalizedCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-294"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateDigitalizedSel</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
<a name="line-295"></a>
<a name="line-296"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">timeCreatedCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-297"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeCreatedSel</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
<a name="line-298"></a>
<a name="line-299"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">timeDigitalizedCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-300"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeDigitalizedSel</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
<a name="line-301"></a>
<a name="line-302"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">timeCreatedCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-303"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoneCreatedSel</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
<a name="line-304"></a>
<a name="line-305"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">timeDigitalizedCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-306"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoneDigitalizedSel</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
<a name="line-307"></a>
<a name="line-308"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dateCreatedCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-309"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">syncEXIFDateCheck</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
<a name="line-310"></a>
<a name="line-311"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cityCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-312"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cityEdit</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
<a name="line-313"></a>
<a name="line-314"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sublocationCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-315"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sublocationEdit</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
<a name="line-316"></a>
<a name="line-317"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">provinceCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-318"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">provinceEdit</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
<a name="line-319"></a>
<a name="line-320"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-321"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCB</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
<a name="line-322"></a>
<a name="line-323"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-324"></a>
<a name="line-325"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dateCreatedCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-326"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-327"></a>
<a name="line-328"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dateDigitalizedCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-329"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-330"></a>
<a name="line-331"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">timeCreatedCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-332"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-333"></a>
<a name="line-334"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">timeDigitalizedCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-335"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-336"></a>
<a name="line-337"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cityCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-338"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-339"></a>
<a name="line-340"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sublocationCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-341"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-342"></a>
<a name="line-343"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">provinceCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-344"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-345"></a>
<a name="line-346"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-347"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-348"></a>
<a name="line-349"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">locationEdit</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()),</span>
<a name="line-350"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-351"></a>
<a name="line-352"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-353"></a>
<a name="line-354"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dateCreatedSel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">dateChanged</span><span class="p">(</span><span class="n">QDate</span><span class="p">)),</span>
<a name="line-355"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-356"></a>
<a name="line-357"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dateDigitalizedSel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">dateChanged</span><span class="p">(</span><span class="n">QDate</span><span class="p">)),</span>
<a name="line-358"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-359"></a>
<a name="line-360"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">timeCreatedSel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">timeChanged</span><span class="p">(</span><span class="n">QTime</span><span class="p">)),</span>
<a name="line-361"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-362"></a>
<a name="line-363"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">timeDigitalizedSel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">timeChanged</span><span class="p">(</span><span class="n">QTime</span><span class="p">)),</span>
<a name="line-364"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-365"></a>
<a name="line-366"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">zoneCreatedSel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">currentIndexChanged</span><span class="p">(</span><span class="n">QString</span><span class="p">)),</span>
<a name="line-367"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-368"></a>
<a name="line-369"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">zoneDigitalizedSel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">currentIndexChanged</span><span class="p">(</span><span class="n">QString</span><span class="p">)),</span>
<a name="line-370"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-371"></a>
<a name="line-372"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-373"></a>
<a name="line-374"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">setTodayCreatedBtn</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">clicked</span><span class="p">()),</span>
<a name="line-375"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotSetTodayCreated</span><span class="p">()));</span>
<a name="line-376"></a>
<a name="line-377"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">setTodayDigitalizedBtn</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">clicked</span><span class="p">()),</span>
<a name="line-378"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotSetTodayDigitalized</span><span class="p">()));</span>
<a name="line-379"></a>
<a name="line-380"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-381"></a>
<a name="line-382"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCB</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">activated</span><span class="p">(</span><span class="kt">int</span><span class="p">)),</span>
<a name="line-383"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-384"></a>
<a name="line-385"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cityEdit</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">textChanged</span><span class="p">(</span><span class="n">QString</span><span class="p">)),</span>
<a name="line-386"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-387"></a>
<a name="line-388"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sublocationEdit</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">textChanged</span><span class="p">(</span><span class="n">QString</span><span class="p">)),</span>
<a name="line-389"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-390"></a>
<a name="line-391"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">provinceEdit</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">textChanged</span><span class="p">(</span><span class="n">QString</span><span class="p">)),</span>
<a name="line-392"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-393"></a><span class="p">}</span>
<a name="line-394"></a>
<a name="line-395"></a><span class="n">IPTCOrigin</span><span class="o">::~</span><span class="n">IPTCOrigin</span><span class="p">()</span>
<a name="line-396"></a><span class="p">{</span>
<a name="line-397"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
<a name="line-398"></a><span class="p">}</span>
<a name="line-399"></a>
<a name="line-400"></a><span class="kt">void</span> <span class="n">IPTCOrigin</span><span class="o">::</span><span class="n">slotSetTodayCreated</span><span class="p">()</span>
<a name="line-401"></a><span class="p">{</span>
<a name="line-402"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateCreatedSel</span><span class="o">-&gt;</span><span class="n">setDate</span><span class="p">(</span><span class="n">QDate</span><span class="o">::</span><span class="n">currentDate</span><span class="p">());</span>
<a name="line-403"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeCreatedSel</span><span class="o">-&gt;</span><span class="n">setTime</span><span class="p">(</span><span class="n">QTime</span><span class="o">::</span><span class="n">currentTime</span><span class="p">());</span>
<a name="line-404"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoneCreatedSel</span><span class="o">-&gt;</span><span class="n">setToUTC</span><span class="p">();</span>
<a name="line-405"></a><span class="p">}</span>
<a name="line-406"></a>
<a name="line-407"></a><span class="kt">void</span> <span class="n">IPTCOrigin</span><span class="o">::</span><span class="n">slotSetTodayDigitalized</span><span class="p">()</span>
<a name="line-408"></a><span class="p">{</span>
<a name="line-409"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateDigitalizedSel</span><span class="o">-&gt;</span><span class="n">setDate</span><span class="p">(</span><span class="n">QDate</span><span class="o">::</span><span class="n">currentDate</span><span class="p">());</span>
<a name="line-410"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeDigitalizedSel</span><span class="o">-&gt;</span><span class="n">setTime</span><span class="p">(</span><span class="n">QTime</span><span class="o">::</span><span class="n">currentTime</span><span class="p">());</span>
<a name="line-411"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoneDigitalizedSel</span><span class="o">-&gt;</span><span class="n">setToUTC</span><span class="p">();</span>
<a name="line-412"></a><span class="p">}</span>
<a name="line-413"></a>
<a name="line-414"></a><span class="kt">bool</span> <span class="n">IPTCOrigin</span><span class="o">::</span><span class="n">syncEXIFDateIsChecked</span><span class="p">()</span> <span class="k">const</span>
<a name="line-415"></a><span class="p">{</span>
<a name="line-416"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">syncEXIFDateCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
<a name="line-417"></a><span class="p">}</span>
<a name="line-418"></a>
<a name="line-419"></a><span class="kt">void</span> <span class="n">IPTCOrigin</span><span class="o">::</span><span class="n">setCheckedSyncEXIFDate</span><span class="p">(</span><span class="kt">bool</span> <span class="n">c</span><span class="p">)</span>
<a name="line-420"></a><span class="p">{</span>
<a name="line-421"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">syncEXIFDateCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">c</span><span class="p">);</span>
<a name="line-422"></a><span class="p">}</span>
<a name="line-423"></a>
<a name="line-424"></a><span class="n">QDateTime</span> <span class="n">IPTCOrigin</span><span class="o">::</span><span class="n">getIPTCCreationDate</span><span class="p">()</span> <span class="k">const</span>
<a name="line-425"></a><span class="p">{</span>
<a name="line-426"></a> <span class="k">return</span> <span class="n">QDateTime</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dateCreatedSel</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeCreatedSel</span><span class="o">-&gt;</span><span class="n">time</span><span class="p">());</span>
<a name="line-427"></a><span class="p">}</span>
<a name="line-428"></a>
<a name="line-429"></a><span class="kt">void</span> <span class="n">IPTCOrigin</span><span class="o">::</span><span class="n">readMetadata</span><span class="p">(</span><span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">iptcData</span><span class="p">)</span>
<a name="line-430"></a><span class="p">{</span>
<a name="line-431"></a> <span class="n">blockSignals</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-432"></a> <span class="n">DMetadata</span> <span class="n">meta</span><span class="p">;</span>
<a name="line-433"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setIptc</span><span class="p">(</span><span class="n">iptcData</span><span class="p">);</span>
<a name="line-434"></a>
<a name="line-435"></a><span class="hll"> <span class="n">QString</span> <span class="n">data</span><span class="p">;</span><span class='error2'>&lt;--- Shadowed declaration</span>
</span><a name="line-436"></a> <span class="n">QStringList</span> <span class="n">code</span><span class="p">,</span> <span class="n">list</span><span class="p">;</span>
<a name="line-437"></a> <span class="n">QDate</span> <span class="n">date</span><span class="p">;</span>
<a name="line-438"></a> <span class="n">QTime</span> <span class="n">time</span><span class="p">;</span>
<a name="line-439"></a> <span class="n">QString</span> <span class="n">dateStr</span><span class="p">,</span> <span class="n">timeStr</span><span class="p">;</span>
<a name="line-440"></a>
<a name="line-441"></a> <span class="n">dateStr</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getIptcTagString</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.DateCreated&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-442"></a> <span class="n">timeStr</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getIptcTagString</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.TimeCreated&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-443"></a>
<a name="line-444"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateCreatedSel</span><span class="o">-&gt;</span><span class="n">setDate</span><span class="p">(</span><span class="n">QDate</span><span class="o">::</span><span class="n">currentDate</span><span class="p">());</span>
<a name="line-445"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateCreatedCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-446"></a>
<a name="line-447"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">dateStr</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-448"></a> <span class="p">{</span>
<a name="line-449"></a> <span class="n">date</span> <span class="o">=</span> <span class="n">QDate</span><span class="o">::</span><span class="n">fromString</span><span class="p">(</span><span class="n">dateStr</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">ISODate</span><span class="p">);</span>
<a name="line-450"></a>
<a name="line-451"></a> <span class="k">if</span> <span class="p">(</span><span class="n">date</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-452"></a> <span class="p">{</span>
<a name="line-453"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateCreatedSel</span><span class="o">-&gt;</span><span class="n">setDate</span><span class="p">(</span><span class="n">date</span><span class="p">);</span>
<a name="line-454"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateCreatedCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-455"></a> <span class="p">}</span>
<a name="line-456"></a> <span class="p">}</span>
<a name="line-457"></a>
<a name="line-458"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateCreatedSel</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dateCreatedCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-459"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">syncEXIFDateCheck</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dateCreatedCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-460"></a>
<a name="line-461"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeCreatedSel</span><span class="o">-&gt;</span><span class="n">setTime</span><span class="p">(</span><span class="n">QTime</span><span class="o">::</span><span class="n">currentTime</span><span class="p">());</span>
<a name="line-462"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeCreatedCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-463"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoneCreatedSel</span><span class="o">-&gt;</span><span class="n">setToUTC</span><span class="p">();</span>
<a name="line-464"></a>
<a name="line-465"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">timeStr</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-466"></a> <span class="p">{</span>
<a name="line-467"></a> <span class="n">time</span> <span class="o">=</span> <span class="n">QTime</span><span class="o">::</span><span class="n">fromString</span><span class="p">(</span><span class="n">timeStr</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">ISODate</span><span class="p">);</span>
<a name="line-468"></a>
<a name="line-469"></a> <span class="k">if</span> <span class="p">(</span><span class="n">time</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-470"></a> <span class="p">{</span>
<a name="line-471"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeCreatedSel</span><span class="o">-&gt;</span><span class="n">setTime</span><span class="p">(</span><span class="n">time</span><span class="p">);</span>
<a name="line-472"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeCreatedCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-473"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoneCreatedSel</span><span class="o">-&gt;</span><span class="n">setTimeZone</span><span class="p">(</span><span class="n">timeStr</span><span class="p">);</span>
<a name="line-474"></a> <span class="p">}</span>
<a name="line-475"></a> <span class="p">}</span>
<a name="line-476"></a>
<a name="line-477"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeCreatedSel</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">timeCreatedCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-478"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoneCreatedSel</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">timeCreatedCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-479"></a>
<a name="line-480"></a> <span class="n">dateStr</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getIptcTagString</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.DigitizationDate&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-481"></a> <span class="n">timeStr</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getIptcTagString</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.DigitizationTime&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-482"></a>
<a name="line-483"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateDigitalizedSel</span><span class="o">-&gt;</span><span class="n">setDate</span><span class="p">(</span><span class="n">QDate</span><span class="o">::</span><span class="n">currentDate</span><span class="p">());</span>
<a name="line-484"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateDigitalizedCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-485"></a>
<a name="line-486"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">dateStr</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-487"></a> <span class="p">{</span>
<a name="line-488"></a> <span class="n">date</span> <span class="o">=</span> <span class="n">QDate</span><span class="o">::</span><span class="n">fromString</span><span class="p">(</span><span class="n">dateStr</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">ISODate</span><span class="p">);</span>
<a name="line-489"></a>
<a name="line-490"></a> <span class="k">if</span> <span class="p">(</span><span class="n">date</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-491"></a> <span class="p">{</span>
<a name="line-492"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateDigitalizedSel</span><span class="o">-&gt;</span><span class="n">setDate</span><span class="p">(</span><span class="n">date</span><span class="p">);</span>
<a name="line-493"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateDigitalizedCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-494"></a> <span class="p">}</span>
<a name="line-495"></a> <span class="p">}</span>
<a name="line-496"></a>
<a name="line-497"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateDigitalizedSel</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dateDigitalizedCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-498"></a>
<a name="line-499"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeDigitalizedSel</span><span class="o">-&gt;</span><span class="n">setTime</span><span class="p">(</span><span class="n">QTime</span><span class="o">::</span><span class="n">currentTime</span><span class="p">());</span>
<a name="line-500"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeDigitalizedCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-501"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoneDigitalizedSel</span><span class="o">-&gt;</span><span class="n">setToUTC</span><span class="p">();</span>
<a name="line-502"></a>
<a name="line-503"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">timeStr</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-504"></a> <span class="p">{</span>
<a name="line-505"></a> <span class="n">time</span> <span class="o">=</span> <span class="n">QTime</span><span class="o">::</span><span class="n">fromString</span><span class="p">(</span><span class="n">timeStr</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">ISODate</span><span class="p">);</span>
<a name="line-506"></a>
<a name="line-507"></a> <span class="k">if</span> <span class="p">(</span><span class="n">time</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-508"></a> <span class="p">{</span>
<a name="line-509"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeDigitalizedSel</span><span class="o">-&gt;</span><span class="n">setTime</span><span class="p">(</span><span class="n">time</span><span class="p">);</span>
<a name="line-510"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeDigitalizedCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-511"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoneDigitalizedSel</span><span class="o">-&gt;</span><span class="n">setTimeZone</span><span class="p">(</span><span class="n">timeStr</span><span class="p">);</span>
<a name="line-512"></a> <span class="p">}</span>
<a name="line-513"></a> <span class="p">}</span>
<a name="line-514"></a>
<a name="line-515"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeDigitalizedSel</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">timeDigitalizedCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-516"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoneDigitalizedSel</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">timeDigitalizedCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-517"></a>
<a name="line-518"></a> <span class="n">code</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getIptcTagsStringList</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.LocationCode&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-519"></a>
<a name="line-520"></a> <span class="k">for</span> <span class="p">(</span><span class="n">QStringList</span><span class="o">::</span><span class="n">Iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">code</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">it</span> <span class="o">!=</span> <span class="n">code</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">it</span><span class="p">)</span>
<a name="line-521"></a> <span class="p">{</span>
<a name="line-522"></a><span class="hll"> <span class="n">QStringList</span> <span class="n">data</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">locationEdit</span><span class="o">-&gt;</span><span class="n">getData</span><span class="p">();</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-523"></a> <span class="n">QStringList</span><span class="o">::</span><span class="n">Iterator</span> <span class="n">it2</span><span class="p">;</span>
<a name="line-524"></a>
<a name="line-525"></a> <span class="k">for</span> <span class="p">(</span><span class="n">it2</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">it2</span> <span class="o">!=</span> <span class="n">data</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">it2</span><span class="p">)</span>
<a name="line-526"></a> <span class="p">{</span>
<a name="line-527"></a> <span class="k">if</span> <span class="p">((</span><span class="o">*</span><span class="n">it2</span><span class="p">).</span><span class="n">left</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="o">==</span> <span class="p">(</span><span class="o">*</span><span class="n">it</span><span class="p">))</span>
<a name="line-528"></a> <span class="p">{</span>
<a name="line-529"></a> <span class="n">list</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="o">*</span><span class="n">it2</span><span class="p">);</span>
<a name="line-530"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-531"></a> <span class="p">}</span>
<a name="line-532"></a> <span class="p">}</span>
<a name="line-533"></a>
<a name="line-534"></a> <span class="k">if</span> <span class="p">(</span><span class="n">it2</span> <span class="o">==</span> <span class="n">data</span><span class="p">.</span><span class="n">end</span><span class="p">())</span>
<a name="line-535"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">locationEdit</span><span class="o">-&gt;</span><span class="n">setValid</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-536"></a> <span class="p">}</span>
<a name="line-537"></a>
<a name="line-538"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">locationEdit</span><span class="o">-&gt;</span><span class="n">setValues</span><span class="p">(</span><span class="n">list</span><span class="p">);</span>
<a name="line-539"></a>
<a name="line-540"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cityEdit</span><span class="o">-&gt;</span><span class="n">clear</span><span class="p">();</span>
<a name="line-541"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cityCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-542"></a> <span class="n">data</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getIptcTagString</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.City&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-543"></a>
<a name="line-544"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">data</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-545"></a> <span class="p">{</span>
<a name="line-546"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cityEdit</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
<a name="line-547"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cityCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-548"></a> <span class="p">}</span>
<a name="line-549"></a>
<a name="line-550"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cityEdit</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cityCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-551"></a>
<a name="line-552"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sublocationEdit</span><span class="o">-&gt;</span><span class="n">clear</span><span class="p">();</span>
<a name="line-553"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sublocationCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-554"></a> <span class="n">data</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getIptcTagString</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.SubLocation&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-555"></a>
<a name="line-556"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">data</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-557"></a> <span class="p">{</span>
<a name="line-558"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sublocationEdit</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
<a name="line-559"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sublocationCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-560"></a> <span class="p">}</span>
<a name="line-561"></a>
<a name="line-562"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sublocationEdit</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sublocationCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-563"></a>
<a name="line-564"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">provinceEdit</span><span class="o">-&gt;</span><span class="n">clear</span><span class="p">();</span>
<a name="line-565"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">provinceCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-566"></a> <span class="n">data</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getIptcTagString</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.ProvinceState&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-567"></a>
<a name="line-568"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">data</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-569"></a> <span class="p">{</span>
<a name="line-570"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">provinceEdit</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
<a name="line-571"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">provinceCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-572"></a> <span class="p">}</span>
<a name="line-573"></a>
<a name="line-574"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">provinceEdit</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">provinceCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-575"></a>
<a name="line-576"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCB</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<a name="line-577"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-578"></a> <span class="n">data</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getIptcTagString</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.CountryCode&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-579"></a>
<a name="line-580"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">data</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-581"></a> <span class="p">{</span>
<a name="line-582"></a> <span class="kt">int</span> <span class="n">item</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<a name="line-583"></a>
<a name="line-584"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCB</span><span class="o">-&gt;</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-585"></a> <span class="p">{</span>
<a name="line-586"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCB</span><span class="o">-&gt;</span><span class="n">itemText</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">left</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="o">==</span> <span class="n">data</span><span class="p">)</span>
<a name="line-587"></a> <span class="n">item</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
<a name="line-588"></a> <span class="p">}</span>
<a name="line-589"></a>
<a name="line-590"></a> <span class="k">if</span> <span class="p">(</span><span class="n">item</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<a name="line-591"></a> <span class="p">{</span>
<a name="line-592"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCB</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">item</span><span class="p">);</span>
<a name="line-593"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-594"></a> <span class="p">}</span>
<a name="line-595"></a> <span class="k">else</span>
<a name="line-596"></a> <span class="p">{</span>
<a name="line-597"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCheck</span><span class="o">-&gt;</span><span class="n">setValid</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-598"></a> <span class="p">}</span>
<a name="line-599"></a> <span class="p">}</span>
<a name="line-600"></a>
<a name="line-601"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCB</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-602"></a>
<a name="line-603"></a> <span class="n">blockSignals</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-604"></a><span class="p">}</span>
<a name="line-605"></a>
<a name="line-606"></a><span class="kt">void</span> <span class="n">IPTCOrigin</span><span class="o">::</span><span class="n">applyMetadata</span><span class="p">(</span><span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">exifData</span><span class="p">,</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">iptcData</span><span class="p">)</span>
<a name="line-607"></a><span class="p">{</span>
<a name="line-608"></a> <span class="n">DMetadata</span> <span class="n">meta</span><span class="p">;</span>
<a name="line-609"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setExif</span><span class="p">(</span><span class="n">exifData</span><span class="p">);</span>
<a name="line-610"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setIptc</span><span class="p">(</span><span class="n">iptcData</span><span class="p">);</span>
<a name="line-611"></a>
<a name="line-612"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dateCreatedCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
<a name="line-613"></a> <span class="p">{</span>
<a name="line-614"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setIptcTagString</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.DateCreated&quot;</span><span class="p">,</span> <span class="n">getIPTCCreationDate</span><span class="p">().</span><span class="n">toString</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">ISODate</span><span class="p">));</span>
<a name="line-615"></a>
<a name="line-616"></a> <span class="k">if</span> <span class="p">(</span><span class="n">syncEXIFDateIsChecked</span><span class="p">())</span>
<a name="line-617"></a> <span class="p">{</span>
<a name="line-618"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Image.DateTime&quot;</span><span class="p">,</span>
<a name="line-619"></a> <span class="n">getIPTCCreationDate</span><span class="p">().</span><span class="n">toString</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yyyy:MM:dd hh:mm:ss&quot;</span><span class="p">)));</span>
<a name="line-620"></a> <span class="p">}</span>
<a name="line-621"></a> <span class="p">}</span>
<a name="line-622"></a> <span class="k">else</span>
<a name="line-623"></a> <span class="p">{</span>
<a name="line-624"></a> <span class="n">meta</span><span class="p">.</span><span class="n">removeIptcTag</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.DateCreated&quot;</span><span class="p">);</span>
<a name="line-625"></a> <span class="p">}</span>
<a name="line-626"></a>
<a name="line-627"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dateDigitalizedCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
<a name="line-628"></a> <span class="p">{</span>
<a name="line-629"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setIptcTagString</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.DigitizationDate&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dateDigitalizedSel</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">toString</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">ISODate</span><span class="p">));</span>
<a name="line-630"></a> <span class="p">}</span>
<a name="line-631"></a> <span class="k">else</span>
<a name="line-632"></a> <span class="p">{</span>
<a name="line-633"></a> <span class="n">meta</span><span class="p">.</span><span class="n">removeIptcTag</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.DigitizationDate&quot;</span><span class="p">);</span>
<a name="line-634"></a> <span class="p">}</span>
<a name="line-635"></a>
<a name="line-636"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">timeCreatedCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
<a name="line-637"></a> <span class="p">{</span>
<a name="line-638"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setIptcTagString</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.TimeCreated&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeCreatedSel</span><span class="o">-&gt;</span><span class="n">time</span><span class="p">().</span><span class="n">toString</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">ISODate</span><span class="p">)</span> <span class="o">+</span>
<a name="line-639"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoneCreatedSel</span><span class="o">-&gt;</span><span class="n">getTimeZone</span><span class="p">());</span>
<a name="line-640"></a> <span class="p">}</span>
<a name="line-641"></a> <span class="k">else</span>
<a name="line-642"></a> <span class="p">{</span>
<a name="line-643"></a> <span class="n">meta</span><span class="p">.</span><span class="n">removeIptcTag</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.TimeCreated&quot;</span><span class="p">);</span>
<a name="line-644"></a> <span class="p">}</span>
<a name="line-645"></a>
<a name="line-646"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">timeDigitalizedCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
<a name="line-647"></a> <span class="p">{</span>
<a name="line-648"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setIptcTagString</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.DigitizationTime&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timeDigitalizedSel</span><span class="o">-&gt;</span><span class="n">time</span><span class="p">().</span><span class="n">toString</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">ISODate</span><span class="p">)</span> <span class="o">+</span>
<a name="line-649"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoneDigitalizedSel</span><span class="o">-&gt;</span><span class="n">getTimeZone</span><span class="p">());</span>
<a name="line-650"></a> <span class="p">}</span>
<a name="line-651"></a> <span class="k">else</span>
<a name="line-652"></a> <span class="p">{</span>
<a name="line-653"></a> <span class="n">meta</span><span class="p">.</span><span class="n">removeIptcTag</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.DigitizationTime&quot;</span><span class="p">);</span>
<a name="line-654"></a> <span class="p">}</span>
<a name="line-655"></a>
<a name="line-656"></a> <span class="n">QStringList</span> <span class="n">oldList</span><span class="p">,</span> <span class="n">newList</span><span class="p">;</span>
<a name="line-657"></a>
<a name="line-658"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">locationEdit</span><span class="o">-&gt;</span><span class="n">getValues</span><span class="p">(</span><span class="n">oldList</span><span class="p">,</span> <span class="n">newList</span><span class="p">))</span>
<a name="line-659"></a> <span class="p">{</span>
<a name="line-660"></a> <span class="n">QStringList</span> <span class="n">oldCode</span><span class="p">,</span> <span class="n">newCode</span><span class="p">,</span> <span class="n">oldName</span><span class="p">,</span> <span class="n">newName</span><span class="p">;</span>
<a name="line-661"></a>
<a name="line-662"></a> <span class="k">for</span> <span class="p">(</span><span class="n">QStringList</span><span class="o">::</span><span class="n">Iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">oldList</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">it</span> <span class="o">!=</span> <span class="n">oldList</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">it</span><span class="p">)</span>
<a name="line-663"></a> <span class="p">{</span>
<a name="line-664"></a> <span class="n">oldCode</span><span class="p">.</span><span class="n">append</span><span class="p">((</span><span class="o">*</span><span class="n">it</span><span class="p">).</span><span class="n">left</span><span class="p">(</span><span class="mi">3</span><span class="p">));</span>
<a name="line-665"></a> <span class="n">oldName</span><span class="p">.</span><span class="n">append</span><span class="p">((</span><span class="o">*</span><span class="n">it</span><span class="p">).</span><span class="n">mid</span><span class="p">(</span><span class="mi">6</span><span class="p">));</span>
<a name="line-666"></a> <span class="p">}</span>
<a name="line-667"></a>
<a name="line-668"></a> <span class="k">for</span> <span class="p">(</span><span class="n">QStringList</span><span class="o">::</span><span class="n">Iterator</span> <span class="n">it2</span> <span class="o">=</span> <span class="n">newList</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">it2</span> <span class="o">!=</span> <span class="n">newList</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">it2</span><span class="p">)</span>
<a name="line-669"></a> <span class="p">{</span>
<a name="line-670"></a> <span class="n">newCode</span><span class="p">.</span><span class="n">append</span><span class="p">((</span><span class="o">*</span><span class="n">it2</span><span class="p">).</span><span class="n">left</span><span class="p">(</span><span class="mi">3</span><span class="p">));</span>
<a name="line-671"></a> <span class="n">newName</span><span class="p">.</span><span class="n">append</span><span class="p">((</span><span class="o">*</span><span class="n">it2</span><span class="p">).</span><span class="n">mid</span><span class="p">(</span><span class="mi">6</span><span class="p">));</span>
<a name="line-672"></a> <span class="p">}</span>
<a name="line-673"></a>
<a name="line-674"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setIptcTagsStringList</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.LocationCode&quot;</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="n">oldCode</span><span class="p">,</span> <span class="n">newCode</span><span class="p">);</span>
<a name="line-675"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setIptcTagsStringList</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.LocationName&quot;</span><span class="p">,</span> <span class="mi">64</span><span class="p">,</span> <span class="n">oldName</span><span class="p">,</span> <span class="n">newName</span><span class="p">);</span>
<a name="line-676"></a> <span class="p">}</span>
<a name="line-677"></a> <span class="k">else</span>
<a name="line-678"></a> <span class="p">{</span>
<a name="line-679"></a> <span class="n">meta</span><span class="p">.</span><span class="n">removeIptcTag</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.LocationCode&quot;</span><span class="p">);</span>
<a name="line-680"></a> <span class="n">meta</span><span class="p">.</span><span class="n">removeIptcTag</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.LocationName&quot;</span><span class="p">);</span>
<a name="line-681"></a> <span class="p">}</span>
<a name="line-682"></a>
<a name="line-683"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cityCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
<a name="line-684"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setIptcTagString</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.City&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cityEdit</span><span class="o">-&gt;</span><span class="n">text</span><span class="p">());</span>
<a name="line-685"></a> <span class="k">else</span>
<a name="line-686"></a> <span class="n">meta</span><span class="p">.</span><span class="n">removeIptcTag</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.City&quot;</span><span class="p">);</span>
<a name="line-687"></a>
<a name="line-688"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sublocationCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
<a name="line-689"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setIptcTagString</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.SubLocation&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sublocationEdit</span><span class="o">-&gt;</span><span class="n">text</span><span class="p">());</span>
<a name="line-690"></a> <span class="k">else</span>
<a name="line-691"></a> <span class="n">meta</span><span class="p">.</span><span class="n">removeIptcTag</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.SubLocation&quot;</span><span class="p">);</span>
<a name="line-692"></a>
<a name="line-693"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">provinceCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
<a name="line-694"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setIptcTagString</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.ProvinceState&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">provinceEdit</span><span class="o">-&gt;</span><span class="n">text</span><span class="p">());</span>
<a name="line-695"></a> <span class="k">else</span>
<a name="line-696"></a> <span class="n">meta</span><span class="p">.</span><span class="n">removeIptcTag</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.ProvinceState&quot;</span><span class="p">);</span>
<a name="line-697"></a>
<a name="line-698"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
<a name="line-699"></a> <span class="p">{</span>
<a name="line-700"></a> <span class="n">QString</span> <span class="n">countryName</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCB</span><span class="o">-&gt;</span><span class="n">currentText</span><span class="p">().</span><span class="n">mid</span><span class="p">(</span><span class="mi">6</span><span class="p">);</span>
<a name="line-701"></a> <span class="n">QString</span> <span class="n">countryCode</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCB</span><span class="o">-&gt;</span><span class="n">currentText</span><span class="p">().</span><span class="n">left</span><span class="p">(</span><span class="mi">3</span><span class="p">);</span>
<a name="line-702"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setIptcTagString</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.CountryCode&quot;</span><span class="p">,</span> <span class="n">countryCode</span><span class="p">);</span>
<a name="line-703"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setIptcTagString</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.CountryName&quot;</span><span class="p">,</span> <span class="n">countryName</span><span class="p">);</span>
<a name="line-704"></a> <span class="p">}</span>
<a name="line-705"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">countryCheck</span><span class="o">-&gt;</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-706"></a> <span class="p">{</span>
<a name="line-707"></a> <span class="n">meta</span><span class="p">.</span><span class="n">removeIptcTag</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.CountryCode&quot;</span><span class="p">);</span>
<a name="line-708"></a> <span class="n">meta</span><span class="p">.</span><span class="n">removeIptcTag</span><span class="p">(</span><span class="s">&quot;Iptc.Application2.CountryName&quot;</span><span class="p">);</span>
<a name="line-709"></a> <span class="p">}</span>
<a name="line-710"></a>
<a name="line-711"></a> <span class="n">exifData</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifEncoded</span><span class="p">();</span>
<a name="line-712"></a> <span class="n">iptcData</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getIptc</span><span class="p">();</span>
<a name="line-713"></a><span class="p">}</span>
<a name="line-714"></a>
<a name="line-715"></a><span class="p">}</span> <span class="c1">// namespace DigikamGenericMetadataEditPlugin</span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/10.html b/static/reports/cppcheck/master/10.html
index b7198719e..af2431e70 100644
--- a/static/reports/cppcheck/master/10.html
+++ b/static/reports/cppcheck/master/10.html
@@ -1,1319 +1,1319 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/dplugins/generic/webservices/onedrive/odtalker.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/dplugins/generic/webservices/onedrive/odtalker.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> odtalker.cpp</p>
<a href='10.html#line-536'> shadowVar 536</a><a href='10.html#line-545'> shadowVar 545</a>
</div>
<div id="content">
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
<a name="line-6"></a><span class="cm"> * Date : 2018-05-20</span>
<a name="line-7"></a><span class="cm"> * Description : a tool to export images to Onedrive web service</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2018 by Tarek Talaat &lt;tarektalaat93 at gmail dot com&gt;</span>
<a name="line-10"></a><span class="cm"> *</span>
<a name="line-11"></a><span class="cm"> * This program is free software; you can redistribute it</span>
<a name="line-12"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
<a name="line-13"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
<a name="line-14"></a><span class="cm"> * either version 2, or (at your option) any later version.</span>
<a name="line-15"></a><span class="cm"> *</span>
<a name="line-16"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
<a name="line-17"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="line-18"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
<a name="line-19"></a><span class="cm"> * GNU General Public License for more details.</span>
<a name="line-20"></a><span class="cm"> *</span>
<a name="line-21"></a><span class="cm"> * ============================================================ */</span>
<a name="line-22"></a>
<a name="line-23"></a><span class="cp">#include</span> <span class="cpf">&quot;odtalker.h&quot;</span><span class="cp"></span>
<a name="line-24"></a>
<a name="line-25"></a><span class="c1">// Qt includes</span>
<a name="line-26"></a>
<a name="line-27"></a><span class="cp">#include</span> <span class="cpf">&lt;QJsonDocument&gt;</span><span class="cp"></span>
<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;QJsonParseError&gt;</span><span class="cp"></span>
<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QJsonObject&gt;</span><span class="cp"></span>
<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QJsonValue&gt;</span><span class="cp"></span>
<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QJsonArray&gt;</span><span class="cp"></span>
<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QByteArray&gt;</span><span class="cp"></span>
<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QList&gt;</span><span class="cp"></span>
<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QPair&gt;</span><span class="cp"></span>
<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QFileInfo&gt;</span><span class="cp"></span>
<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QWidget&gt;</span><span class="cp"></span>
<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&lt;QMessageBox&gt;</span><span class="cp"></span>
<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&lt;QApplication&gt;</span><span class="cp"></span>
<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&lt;QMimeDatabase&gt;</span><span class="cp"></span>
<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&lt;QDesktopServices&gt;</span><span class="cp"></span>
<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&lt;QUrlQuery&gt;</span><span class="cp"></span>
<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&lt;QNetworkAccessManager&gt;</span><span class="cp"></span>
<a name="line-43"></a>
<a name="line-44"></a><span class="c1">// KDE includes</span>
<a name="line-45"></a>
<a name="line-46"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
<a name="line-47"></a><span class="cp">#include</span> <span class="cpf">&lt;kwindowconfig.h&gt;</span><span class="cp"></span>
<a name="line-48"></a>
<a name="line-49"></a><span class="c1">// Local includes</span>
<a name="line-50"></a>
<a name="line-51"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
<a name="line-52"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_version.h&quot;</span><span class="cp"></span>
<a name="line-53"></a><span class="cp">#include</span> <span class="cpf">&quot;wstoolutils.h&quot;</span><span class="cp"></span>
<a name="line-54"></a><span class="cp">#include</span> <span class="cpf">&quot;odwindow.h&quot;</span><span class="cp"></span>
<a name="line-55"></a><span class="cp">#include</span> <span class="cpf">&quot;oditem.h&quot;</span><span class="cp"></span>
<a name="line-56"></a><span class="cp">#include</span> <span class="cpf">&quot;odmpform.h&quot;</span><span class="cp"></span>
<a name="line-57"></a><span class="cp">#include</span> <span class="cpf">&quot;webbrowserdlg.h&quot;</span><span class="cp"></span>
<a name="line-58"></a><span class="cp">#include</span> <span class="cpf">&quot;previewloadthread.h&quot;</span><span class="cp"></span>
<a name="line-59"></a>
<a name="line-60"></a><span class="k">namespace</span> <span class="n">DigikamGenericOneDrivePlugin</span>
<a name="line-61"></a><span class="p">{</span>
<a name="line-62"></a>
<a name="line-63"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">ODTalker</span><span class="o">::</span><span class="n">Private</span>
<a name="line-64"></a><span class="p">{</span>
<a name="line-65"></a><span class="k">public</span><span class="o">:</span>
<a name="line-66"></a>
<a name="line-67"></a> <span class="k">enum</span> <span class="n">State</span>
<a name="line-68"></a> <span class="p">{</span>
<a name="line-69"></a> <span class="n">OD_USERNAME</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
<a name="line-70"></a> <span class="n">OD_LISTFOLDERS</span><span class="p">,</span>
<a name="line-71"></a> <span class="n">OD_CREATEFOLDER</span><span class="p">,</span>
<a name="line-72"></a> <span class="n">OD_ADDPHOTO</span>
<a name="line-73"></a> <span class="p">};</span>
<a name="line-74"></a>
<a name="line-75"></a><span class="k">public</span><span class="o">:</span>
<a name="line-76"></a>
<a name="line-77"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
<a name="line-78"></a> <span class="o">:</span> <span class="n">state</span><span class="p">(</span><span class="n">OD_USERNAME</span><span class="p">),</span>
<a name="line-79"></a> <span class="n">parent</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-80"></a> <span class="n">netMngr</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-81"></a> <span class="n">reply</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-82"></a> <span class="n">settings</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-83"></a> <span class="n">browser</span><span class="p">(</span><span class="k">nullptr</span><span class="p">)</span>
<a name="line-84"></a> <span class="p">{</span>
<a name="line-85"></a> <span class="n">clientId</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;4c20a541-2ca8-4b98-8847-a375e4d33f34&quot;</span><span class="p">);</span>
<a name="line-86"></a> <span class="n">clientSecret</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;wtdcaXADCZ0|tcDA7633|@*&quot;</span><span class="p">);</span>
<a name="line-87"></a>
<a name="line-88"></a> <span class="n">authUrl</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://login.live.com/oauth20_authorize.srf&quot;</span><span class="p">);</span>
<a name="line-89"></a> <span class="n">tokenUrl</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://login.live.com/oauth20_token.srf&quot;</span><span class="p">);</span>
<a name="line-90"></a> <span class="n">scope</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Files.ReadWrite User.Read&quot;</span><span class="p">);</span>
<a name="line-91"></a> <span class="n">redirectUrl</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://login.live.com/oauth20_desktop.srf&quot;</span><span class="p">);</span>
<a name="line-92"></a> <span class="n">serviceName</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Onedrive&quot;</span><span class="p">);</span>
<a name="line-93"></a> <span class="n">serviceTime</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;token_time&quot;</span><span class="p">);</span>
<a name="line-94"></a> <span class="n">serviceKey</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;access_token&quot;</span><span class="p">);</span>
<a name="line-95"></a> <span class="p">}</span>
<a name="line-96"></a>
<a name="line-97"></a><span class="k">public</span><span class="o">:</span>
<a name="line-98"></a>
<a name="line-99"></a> <span class="n">QString</span> <span class="n">clientId</span><span class="p">;</span>
<a name="line-100"></a> <span class="n">QString</span> <span class="n">clientSecret</span><span class="p">;</span>
<a name="line-101"></a> <span class="n">QString</span> <span class="n">authUrl</span><span class="p">;</span>
<a name="line-102"></a> <span class="n">QString</span> <span class="n">tokenUrl</span><span class="p">;</span>
<a name="line-103"></a> <span class="n">QString</span> <span class="n">scope</span><span class="p">;</span>
<a name="line-104"></a> <span class="n">QString</span> <span class="n">redirectUrl</span><span class="p">;</span>
<a name="line-105"></a> <span class="n">QString</span> <span class="n">accessToken</span><span class="p">;</span>
<a name="line-106"></a> <span class="n">QString</span> <span class="n">serviceName</span><span class="p">;</span>
<a name="line-107"></a> <span class="n">QString</span> <span class="n">serviceTime</span><span class="p">;</span>
<a name="line-108"></a> <span class="n">QString</span> <span class="n">serviceKey</span><span class="p">;</span>
<a name="line-109"></a>
<a name="line-110"></a> <span class="n">QDateTime</span> <span class="n">expiryTime</span><span class="p">;</span>
<a name="line-111"></a>
<a name="line-112"></a> <span class="n">State</span> <span class="n">state</span><span class="p">;</span>
<a name="line-113"></a>
<a name="line-114"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="n">parent</span><span class="p">;</span>
<a name="line-115"></a>
<a name="line-116"></a> <span class="n">QNetworkAccessManager</span><span class="o">*</span> <span class="n">netMngr</span><span class="p">;</span>
<a name="line-117"></a> <span class="n">QNetworkReply</span><span class="o">*</span> <span class="n">reply</span><span class="p">;</span>
<a name="line-118"></a>
<a name="line-119"></a> <span class="n">QSettings</span><span class="o">*</span> <span class="n">settings</span><span class="p">;</span>
<a name="line-120"></a>
<a name="line-121"></a> <span class="n">WebBrowserDlg</span><span class="o">*</span> <span class="n">browser</span><span class="p">;</span>
<a name="line-122"></a>
<a name="line-123"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">folderList</span><span class="p">;</span>
<a name="line-124"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QString</span><span class="o">&gt;</span> <span class="n">nextFolder</span><span class="p">;</span>
<a name="line-125"></a><span class="p">};</span>
<a name="line-126"></a>
<a name="line-127"></a><span class="n">ODTalker</span><span class="o">::</span><span class="n">ODTalker</span><span class="p">(</span><span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span><span class="p">)</span>
<a name="line-128"></a> <span class="o">:</span> <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">Private</span><span class="p">)</span>
<a name="line-129"></a><span class="p">{</span>
<a name="line-130"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span><span class="p">;</span>
<a name="line-131"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QNetworkAccessManager</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-132"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span> <span class="o">=</span> <span class="n">WSToolUtils</span><span class="o">::</span><span class="n">getOauthSettings</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-133"></a>
<a name="line-134"></a> <span class="n">connect</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">oneDriveLinkingFailed</span><span class="p">()),</span>
<a name="line-135"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotLinkingFailed</span><span class="p">()));</span>
<a name="line-136"></a>
<a name="line-137"></a> <span class="n">connect</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">oneDriveLinkingSucceeded</span><span class="p">()),</span>
<a name="line-138"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotLinkingSucceeded</span><span class="p">()));</span>
<a name="line-139"></a>
<a name="line-140"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">finished</span><span class="p">(</span><span class="n">QNetworkReply</span><span class="o">*</span><span class="p">)),</span>
<a name="line-141"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotFinished</span><span class="p">(</span><span class="n">QNetworkReply</span><span class="o">*</span><span class="p">)));</span>
<a name="line-142"></a><span class="p">}</span>
<a name="line-143"></a>
<a name="line-144"></a><span class="n">ODTalker</span><span class="o">::~</span><span class="n">ODTalker</span><span class="p">()</span>
<a name="line-145"></a><span class="p">{</span>
<a name="line-146"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
<a name="line-147"></a> <span class="p">{</span>
<a name="line-148"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">abort</span><span class="p">();</span>
<a name="line-149"></a> <span class="p">}</span>
<a name="line-150"></a>
<a name="line-151"></a> <span class="n">WSToolUtils</span><span class="o">::</span><span class="n">removeTemporaryDir</span><span class="p">(</span><span class="s">&quot;onedrive&quot;</span><span class="p">);</span>
<a name="line-152"></a>
<a name="line-153"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
<a name="line-154"></a><span class="p">}</span>
<a name="line-155"></a>
<a name="line-156"></a><span class="kt">void</span> <span class="n">ODTalker</span><span class="o">::</span><span class="n">link</span><span class="p">()</span>
<a name="line-157"></a><span class="p">{</span>
<a name="line-158"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-159"></a>
<a name="line-160"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">authUrl</span><span class="p">);</span>
<a name="line-161"></a> <span class="n">QUrlQuery</span> <span class="nf">query</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
<a name="line-162"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;client_id&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">clientId</span><span class="p">);</span>
<a name="line-163"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;scope&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">scope</span><span class="p">);</span>
<a name="line-164"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;redirect_uri&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">redirectUrl</span><span class="p">);</span>
<a name="line-165"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;response_type&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;token&quot;</span><span class="p">));</span>
<a name="line-166"></a> <span class="n">url</span><span class="p">.</span><span class="n">setQuery</span><span class="p">(</span><span class="n">query</span><span class="p">);</span>
<a name="line-167"></a>
<a name="line-168"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">browser</span><span class="p">;</span>
<a name="line-169"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">browser</span> <span class="o">=</span> <span class="k">new</span> <span class="n">WebBrowserDlg</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">,</span> <span class="nb">true</span><span class="p">);</span>
<a name="line-170"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">browser</span><span class="o">-&gt;</span><span class="n">setModal</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-171"></a>
<a name="line-172"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">browser</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">urlChanged</span><span class="p">(</span><span class="n">QUrl</span><span class="p">)),</span>
<a name="line-173"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotCatchUrl</span><span class="p">(</span><span class="n">QUrl</span><span class="p">)));</span>
<a name="line-174"></a>
<a name="line-175"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">browser</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">closeView</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-176"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalBusy</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
<a name="line-177"></a>
<a name="line-178"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">browser</span><span class="o">-&gt;</span><span class="n">show</span><span class="p">();</span>
<a name="line-179"></a><span class="p">}</span>
<a name="line-180"></a>
<a name="line-181"></a><span class="kt">void</span> <span class="n">ODTalker</span><span class="o">::</span><span class="n">unLink</span><span class="p">()</span>
<a name="line-182"></a><span class="p">{</span>
<a name="line-183"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span> <span class="o">=</span> <span class="n">QString</span><span class="p">();</span>
<a name="line-184"></a>
<a name="line-185"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">beginGroup</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceName</span><span class="p">);</span>
<a name="line-186"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">remove</span><span class="p">(</span><span class="n">QString</span><span class="p">());</span>
<a name="line-187"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">endGroup</span><span class="p">();</span>
<a name="line-188"></a>
<a name="line-189"></a> <span class="n">emit</span> <span class="nf">oneDriveLinkingSucceeded</span><span class="p">();</span>
<a name="line-190"></a><span class="p">}</span>
<a name="line-191"></a>
<a name="line-192"></a><span class="kt">void</span> <span class="n">ODTalker</span><span class="o">::</span><span class="n">slotCatchUrl</span><span class="p">(</span><span class="k">const</span> <span class="n">QUrl</span><span class="o">&amp;</span> <span class="n">url</span><span class="p">)</span>
<a name="line-193"></a><span class="p">{</span>
<a name="line-194"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Received URL from webview:&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">url</span><span class="p">;</span>
<a name="line-195"></a>
<a name="line-196"></a> <span class="n">QString</span> <span class="n">str</span> <span class="o">=</span> <span class="n">url</span><span class="p">.</span><span class="n">toString</span><span class="p">();</span>
<a name="line-197"></a> <span class="n">QUrlQuery</span> <span class="nf">query</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">section</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;#&#39;</span><span class="p">),</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">));</span>
<a name="line-198"></a>
<a name="line-199"></a> <span class="k">if</span> <span class="p">(</span><span class="n">query</span><span class="p">.</span><span class="n">hasQueryItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;access_token&quot;</span><span class="p">)))</span>
<a name="line-200"></a> <span class="p">{</span>
<a name="line-201"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span> <span class="o">=</span> <span class="n">query</span><span class="p">.</span><span class="n">queryItemValue</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;access_token&quot;</span><span class="p">));</span>
<a name="line-202"></a> <span class="kt">int</span> <span class="n">seconds</span> <span class="o">=</span> <span class="n">query</span><span class="p">.</span><span class="n">queryItemValue</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;expires_in&quot;</span><span class="p">)).</span><span class="n">toInt</span><span class="p">();</span>
<a name="line-203"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">expiryTime</span> <span class="o">=</span> <span class="n">QDateTime</span><span class="o">::</span><span class="n">currentDateTime</span><span class="p">().</span><span class="n">addSecs</span><span class="p">(</span><span class="n">seconds</span><span class="p">);</span>
<a name="line-204"></a>
<a name="line-205"></a> <span class="n">writeSettings</span><span class="p">();</span>
<a name="line-206"></a>
<a name="line-207"></a> <span class="n">qDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Access token received&quot;</span><span class="p">;</span>
<a name="line-208"></a> <span class="n">emit</span> <span class="nf">oneDriveLinkingSucceeded</span><span class="p">();</span>
<a name="line-209"></a> <span class="p">}</span>
<a name="line-210"></a> <span class="k">else</span>
<a name="line-211"></a> <span class="p">{</span>
<a name="line-212"></a> <span class="n">emit</span> <span class="n">oneDriveLinkingFailed</span><span class="p">();</span>
<a name="line-213"></a> <span class="p">}</span>
<a name="line-214"></a><span class="p">}</span>
<a name="line-215"></a>
<a name="line-216"></a><span class="kt">void</span> <span class="n">ODTalker</span><span class="o">::</span><span class="n">slotLinkingFailed</span><span class="p">()</span>
<a name="line-217"></a><span class="p">{</span>
<a name="line-218"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;LINK to Onedrive fail&quot;</span><span class="p">;</span>
<a name="line-219"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-220"></a><span class="p">}</span>
<a name="line-221"></a>
<a name="line-222"></a><span class="kt">void</span> <span class="n">ODTalker</span><span class="o">::</span><span class="n">slotLinkingSucceeded</span><span class="p">()</span>
<a name="line-223"></a><span class="p">{</span>
<a name="line-224"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-225"></a> <span class="p">{</span>
<a name="line-226"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;UNLINK to Onedrive&quot;</span><span class="p">;</span>
<a name="line-227"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-228"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-229"></a> <span class="p">}</span>
<a name="line-230"></a>
<a name="line-231"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;LINK to Onedrive&quot;</span><span class="p">;</span>
<a name="line-232"></a>
<a name="line-233"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">browser</span><span class="p">)</span>
<a name="line-234"></a> <span class="p">{</span>
<a name="line-235"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">browser</span><span class="o">-&gt;</span><span class="n">close</span><span class="p">();</span>
<a name="line-236"></a> <span class="p">}</span>
<a name="line-237"></a>
<a name="line-238"></a> <span class="n">emit</span> <span class="n">signalLinkingSucceeded</span><span class="p">();</span>
<a name="line-239"></a><span class="p">}</span>
<a name="line-240"></a>
<a name="line-241"></a><span class="kt">bool</span> <span class="n">ODTalker</span><span class="o">::</span><span class="n">authenticated</span><span class="p">()</span>
<a name="line-242"></a><span class="p">{</span>
<a name="line-243"></a> <span class="k">return</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">());</span>
<a name="line-244"></a><span class="p">}</span>
<a name="line-245"></a>
<a name="line-246"></a><span class="kt">void</span> <span class="n">ODTalker</span><span class="o">::</span><span class="n">cancel</span><span class="p">()</span>
<a name="line-247"></a><span class="p">{</span>
<a name="line-248"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
<a name="line-249"></a> <span class="p">{</span>
<a name="line-250"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">abort</span><span class="p">();</span>
<a name="line-251"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-252"></a> <span class="p">}</span>
<a name="line-253"></a>
<a name="line-254"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-255"></a><span class="p">}</span>
<a name="line-256"></a>
<a name="line-257"></a><span class="kt">void</span> <span class="n">ODTalker</span><span class="o">::</span><span class="n">createFolder</span><span class="p">(</span><span class="n">QString</span><span class="o">&amp;</span> <span class="n">path</span><span class="p">)</span>
<a name="line-258"></a><span class="p">{</span>
<a name="line-259"></a> <span class="c1">//path also has name of new folder so send path parameter accordingly</span>
<a name="line-260"></a> <span class="n">QString</span> <span class="n">name</span> <span class="o">=</span> <span class="n">QUrl</span><span class="p">(</span><span class="n">path</span><span class="p">).</span><span class="n">fileName</span><span class="p">();</span>
<a name="line-261"></a> <span class="n">QString</span> <span class="n">folderPath</span> <span class="o">=</span> <span class="n">QUrl</span><span class="p">(</span><span class="n">path</span><span class="p">).</span><span class="n">adjusted</span><span class="p">(</span><span class="n">QUrl</span><span class="o">::</span><span class="n">RemoveFilename</span> <span class="o">|</span>
<a name="line-262"></a> <span class="n">QUrl</span><span class="o">::</span><span class="n">StripTrailingSlash</span><span class="p">).</span><span class="n">path</span><span class="p">();</span>
<a name="line-263"></a>
<a name="line-264"></a> <span class="n">QUrl</span> <span class="n">url</span><span class="p">;</span>
<a name="line-265"></a>
<a name="line-266"></a> <span class="k">if</span> <span class="p">(</span><span class="n">folderPath</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/&quot;</span><span class="p">))</span>
<a name="line-267"></a> <span class="p">{</span>
<a name="line-268"></a> <span class="n">url</span> <span class="o">=</span> <span class="n">QUrl</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://graph.microsoft.com/v1.0/me/drive/root/children&quot;</span><span class="p">));</span>
<a name="line-269"></a> <span class="p">}</span>
<a name="line-270"></a> <span class="k">else</span>
<a name="line-271"></a> <span class="p">{</span>
<a name="line-272"></a> <span class="n">url</span> <span class="o">=</span> <span class="n">QUrl</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;https://graph.microsoft.com/v1.0/me/drive/root:/%1:/children&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">folderPath</span><span class="p">));</span>
<a name="line-273"></a> <span class="p">}</span>
<a name="line-274"></a>
<a name="line-275"></a> <span class="n">QNetworkRequest</span> <span class="n">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
<a name="line-276"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/json&quot;</span><span class="p">));</span>
<a name="line-277"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;bearer %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span><span class="p">).</span><span class="n">toUtf8</span><span class="p">());</span>
<a name="line-278"></a>
<a name="line-279"></a> <span class="n">QByteArray</span> <span class="n">postData</span> <span class="o">=</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;{</span><span class="se">\&quot;</span><span class="s">name</span><span class="se">\&quot;</span><span class="s">: </span><span class="se">\&quot;</span><span class="s">%1</span><span class="se">\&quot;</span><span class="s">,</span><span class="se">\&quot;</span><span class="s">folder</span><span class="se">\&quot;</span><span class="s">: {}}&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">name</span><span class="p">).</span><span class="n">toUtf8</span><span class="p">();</span>
<a name="line-280"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">postData</span><span class="p">);</span>
<a name="line-281"></a>
<a name="line-282"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">OD_CREATEFOLDER</span><span class="p">;</span>
<a name="line-283"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-284"></a><span class="p">}</span>
<a name="line-285"></a>
<a name="line-286"></a><span class="kt">void</span> <span class="n">ODTalker</span><span class="o">::</span><span class="n">getUserName</span><span class="p">()</span>
<a name="line-287"></a><span class="p">{</span>
<a name="line-288"></a> <span class="n">QUrl</span> <span class="n">url</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://graph.microsoft.com/v1.0/me&quot;</span><span class="p">));</span>
<a name="line-289"></a>
<a name="line-290"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
<a name="line-291"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;bearer %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span><span class="p">).</span><span class="n">toUtf8</span><span class="p">());</span>
<a name="line-292"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/json&quot;</span><span class="p">));</span>
<a name="line-293"></a>
<a name="line-294"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">get</span><span class="p">(</span><span class="n">netRequest</span><span class="p">);</span>
<a name="line-295"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">OD_USERNAME</span><span class="p">;</span>
<a name="line-296"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-297"></a><span class="p">}</span>
<a name="line-298"></a>
<a name="line-299"></a><span class="cm">/** Get list of folders by parsing json sent by onedrive</span>
<a name="line-300"></a><span class="cm"> */</span>
<a name="line-301"></a><span class="kt">void</span> <span class="n">ODTalker</span><span class="o">::</span><span class="n">listFolders</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">folder</span><span class="p">)</span>
<a name="line-302"></a><span class="p">{</span>
<a name="line-303"></a> <span class="n">QString</span> <span class="n">nextFolder</span><span class="p">;</span>
<a name="line-304"></a>
<a name="line-305"></a> <span class="k">if</span> <span class="p">(</span><span class="n">folder</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-306"></a> <span class="p">{</span>
<a name="line-307"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">folderList</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-308"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">nextFolder</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-309"></a> <span class="p">}</span>
<a name="line-310"></a> <span class="k">else</span>
<a name="line-311"></a> <span class="p">{</span>
<a name="line-312"></a> <span class="n">nextFolder</span> <span class="o">=</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;:&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">folder</span> <span class="o">+</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;:&#39;</span><span class="p">);</span>
<a name="line-313"></a> <span class="p">}</span>
<a name="line-314"></a>
<a name="line-315"></a> <span class="n">QUrl</span> <span class="n">url</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;https://graph.microsoft.com/v1.0/me/drive/root%1/&quot;</span>
<a name="line-316"></a> <span class="s">&quot;children?select=name,folder,path,parentReference&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">nextFolder</span><span class="p">));</span>
<a name="line-317"></a>
<a name="line-318"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
<a name="line-319"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;bearer %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span><span class="p">).</span><span class="n">toUtf8</span><span class="p">());</span>
<a name="line-320"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/json&quot;</span><span class="p">));</span>
<a name="line-321"></a>
<a name="line-322"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">get</span><span class="p">(</span><span class="n">netRequest</span><span class="p">);</span>
<a name="line-323"></a>
<a name="line-324"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">OD_LISTFOLDERS</span><span class="p">;</span>
<a name="line-325"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-326"></a><span class="p">}</span>
<a name="line-327"></a>
<a name="line-328"></a><span class="kt">bool</span> <span class="n">ODTalker</span><span class="o">::</span><span class="n">addPhoto</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">imgPath</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">uploadFolder</span><span class="p">,</span> <span class="kt">bool</span> <span class="n">rescale</span><span class="p">,</span> <span class="kt">int</span> <span class="n">maxDim</span><span class="p">,</span> <span class="kt">int</span> <span class="n">imageQuality</span><span class="p">)</span>
<a name="line-329"></a><span class="p">{</span>
<a name="line-330"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
<a name="line-331"></a> <span class="p">{</span>
<a name="line-332"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">abort</span><span class="p">();</span>
<a name="line-333"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-334"></a> <span class="p">}</span>
<a name="line-335"></a>
<a name="line-336"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-337"></a>
<a name="line-338"></a> <span class="n">ODMPForm</span> <span class="n">form</span><span class="p">;</span>
<a name="line-339"></a> <span class="n">QString</span> <span class="n">path</span> <span class="o">=</span> <span class="n">imgPath</span><span class="p">;</span>
<a name="line-340"></a>
<a name="line-341"></a> <span class="n">QMimeDatabase</span> <span class="n">mimeDB</span><span class="p">;</span>
<a name="line-342"></a>
<a name="line-343"></a> <span class="k">if</span> <span class="p">(</span><span class="n">mimeDB</span><span class="p">.</span><span class="n">mimeTypeForFile</span><span class="p">(</span><span class="n">imgPath</span><span class="p">).</span><span class="n">name</span><span class="p">().</span><span class="n">startsWith</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;image/&quot;</span><span class="p">)))</span>
<a name="line-344"></a> <span class="p">{</span>
<a name="line-345"></a> <span class="n">QImage</span> <span class="n">image</span> <span class="o">=</span> <span class="n">PreviewLoadThread</span><span class="o">::</span><span class="n">loadHighQualitySynchronously</span><span class="p">(</span><span class="n">imgPath</span><span class="p">).</span><span class="n">copyQImage</span><span class="p">();</span>
<a name="line-346"></a>
<a name="line-347"></a> <span class="k">if</span> <span class="p">(</span><span class="n">image</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-348"></a> <span class="p">{</span>
<a name="line-349"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-350"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-351"></a> <span class="p">}</span>
<a name="line-352"></a>
<a name="line-353"></a> <span class="n">path</span> <span class="o">=</span> <span class="n">WSToolUtils</span><span class="o">::</span><span class="n">makeTemporaryDir</span><span class="p">(</span><span class="s">&quot;onedrive&quot;</span><span class="p">).</span><span class="n">filePath</span><span class="p">(</span><span class="n">QFileInfo</span><span class="p">(</span><span class="n">imgPath</span><span class="p">)</span>
<a name="line-354"></a> <span class="p">.</span><span class="n">baseName</span><span class="p">().</span><span class="n">trimmed</span><span class="p">()</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;.jpg&quot;</span><span class="p">));</span>
<a name="line-355"></a>
<a name="line-356"></a> <span class="k">if</span> <span class="p">(</span><span class="n">rescale</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">image</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">maxDim</span> <span class="o">||</span> <span class="n">image</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">maxDim</span><span class="p">))</span>
<a name="line-357"></a> <span class="p">{</span>
<a name="line-358"></a> <span class="n">image</span> <span class="o">=</span> <span class="n">image</span><span class="p">.</span><span class="n">scaled</span><span class="p">(</span><span class="n">maxDim</span><span class="p">,</span> <span class="n">maxDim</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">KeepAspectRatio</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">SmoothTransformation</span><span class="p">);</span>
<a name="line-359"></a> <span class="p">}</span>
<a name="line-360"></a>
<a name="line-361"></a> <span class="n">image</span><span class="p">.</span><span class="n">save</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s">&quot;JPEG&quot;</span><span class="p">,</span> <span class="n">imageQuality</span><span class="p">);</span>
<a name="line-362"></a>
<a name="line-363"></a> <span class="n">DMetadata</span> <span class="n">meta</span><span class="p">;</span>
<a name="line-364"></a>
<a name="line-365"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">load</span><span class="p">(</span><span class="n">imgPath</span><span class="p">))</span>
<a name="line-366"></a> <span class="p">{</span>
<a name="line-367"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setItemDimensions</span><span class="p">(</span><span class="n">image</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
<a name="line-368"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setItemOrientation</span><span class="p">(</span><span class="n">DMetadata</span><span class="o">::</span><span class="n">ORIENTATION_NORMAL</span><span class="p">);</span>
<a name="line-369"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setMetadataWritingMode</span><span class="p">((</span><span class="kt">int</span><span class="p">)</span><span class="n">DMetadata</span><span class="o">::</span><span class="n">WRITE_TO_FILE_ONLY</span><span class="p">);</span>
<a name="line-370"></a> <span class="n">meta</span><span class="p">.</span><span class="n">save</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="nb">true</span><span class="p">);</span>
<a name="line-371"></a> <span class="p">}</span>
<a name="line-372"></a> <span class="p">}</span>
<a name="line-373"></a>
<a name="line-374"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">form</span><span class="p">.</span><span class="n">addFile</span><span class="p">(</span><span class="n">path</span><span class="p">))</span>
<a name="line-375"></a> <span class="p">{</span>
<a name="line-376"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-377"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-378"></a> <span class="p">}</span>
<a name="line-379"></a>
<a name="line-380"></a> <span class="n">QString</span> <span class="n">uploadPath</span> <span class="o">=</span> <span class="n">uploadFolder</span> <span class="o">+</span> <span class="n">QUrl</span><span class="p">(</span><span class="n">imgPath</span><span class="p">).</span><span class="n">fileName</span><span class="p">();</span>
<a name="line-381"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;https://graph.microsoft.com/v1.0/me/drive/root:/%1:/content&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">uploadPath</span><span class="p">));</span>
<a name="line-382"></a>
<a name="line-383"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
<a name="line-384"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/octet-stream&quot;</span><span class="p">));</span>
<a name="line-385"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;bearer {%1}&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span><span class="p">).</span><span class="n">toUtf8</span><span class="p">());</span>
<a name="line-386"></a>
<a name="line-387"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">put</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">form</span><span class="p">.</span><span class="n">formData</span><span class="p">());</span>
<a name="line-388"></a>
<a name="line-389"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">OD_ADDPHOTO</span><span class="p">;</span>
<a name="line-390"></a>
<a name="line-391"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-392"></a><span class="p">}</span>
<a name="line-393"></a>
<a name="line-394"></a><span class="kt">void</span> <span class="n">ODTalker</span><span class="o">::</span><span class="n">slotFinished</span><span class="p">(</span><span class="n">QNetworkReply</span><span class="o">*</span> <span class="n">reply</span><span class="p">)</span>
<a name="line-395"></a><span class="p">{</span>
<a name="line-396"></a> <span class="k">if</span> <span class="p">(</span><span class="n">reply</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
<a name="line-397"></a> <span class="p">{</span>
<a name="line-398"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-399"></a> <span class="p">}</span>
<a name="line-400"></a>
<a name="line-401"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-402"></a>
<a name="line-403"></a> <span class="k">if</span> <span class="p">(</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">error</span><span class="p">()</span> <span class="o">!=</span> <span class="n">QNetworkReply</span><span class="o">::</span><span class="n">NoError</span><span class="p">)</span>
<a name="line-404"></a> <span class="p">{</span>
<a name="line-405"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">!=</span> <span class="n">Private</span><span class="o">::</span><span class="n">OD_CREATEFOLDER</span><span class="p">)</span>
<a name="line-406"></a> <span class="p">{</span>
<a name="line-407"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-408"></a> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">critical</span><span class="p">(</span><span class="n">QApplication</span><span class="o">::</span><span class="n">activeWindow</span><span class="p">(),</span>
<a name="line-409"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Error&quot;</span><span class="p">),</span> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">errorString</span><span class="p">());</span>
<a name="line-410"></a>
<a name="line-411"></a> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">deleteLater</span><span class="p">();</span>
<a name="line-412"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-413"></a> <span class="p">}</span>
<a name="line-414"></a> <span class="p">}</span>
<a name="line-415"></a>
<a name="line-416"></a> <span class="n">QByteArray</span> <span class="n">buffer</span> <span class="o">=</span> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">readAll</span><span class="p">();</span>
<a name="line-417"></a>
<a name="line-418"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span><span class="p">)</span>
<a name="line-419"></a> <span class="p">{</span>
<a name="line-420"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">OD_LISTFOLDERS</span><span class="p">:</span>
<a name="line-421"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;In OD_LISTFOLDERS&quot;</span><span class="p">;</span>
<a name="line-422"></a> <span class="n">parseResponseListFolders</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
<a name="line-423"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-424"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">OD_CREATEFOLDER</span><span class="p">:</span>
<a name="line-425"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;In OD_CREATEFOLDER&quot;</span><span class="p">;</span>
<a name="line-426"></a> <span class="n">parseResponseCreateFolder</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
<a name="line-427"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-428"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">OD_ADDPHOTO</span><span class="p">:</span>
<a name="line-429"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;In OD_ADDPHOTO&quot;</span><span class="p">;</span>
<a name="line-430"></a> <span class="n">parseResponseAddPhoto</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
<a name="line-431"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-432"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">OD_USERNAME</span><span class="p">:</span>
<a name="line-433"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;In OD_USERNAME&quot;</span><span class="p">;</span>
<a name="line-434"></a> <span class="n">parseResponseUserName</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
<a name="line-435"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-436"></a> <span class="k">default</span><span class="o">:</span>
<a name="line-437"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-438"></a> <span class="p">}</span>
<a name="line-439"></a>
<a name="line-440"></a> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">deleteLater</span><span class="p">();</span>
<a name="line-441"></a><span class="p">}</span>
<a name="line-442"></a>
<a name="line-443"></a><span class="kt">void</span> <span class="n">ODTalker</span><span class="o">::</span><span class="n">parseResponseAddPhoto</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
<a name="line-444"></a><span class="p">{</span>
<a name="line-445"></a> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
<a name="line-446"></a> <span class="n">QJsonObject</span> <span class="n">jsonObject</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">object</span><span class="p">();</span>
<a name="line-447"></a> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="n">jsonObject</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;size&quot;</span><span class="p">));</span>
<a name="line-448"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-449"></a>
<a name="line-450"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">success</span><span class="p">)</span>
<a name="line-451"></a> <span class="p">{</span>
<a name="line-452"></a> <span class="n">emit</span> <span class="n">signalAddPhotoFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to upload photo&quot;</span><span class="p">));</span>
<a name="line-453"></a> <span class="p">}</span>
<a name="line-454"></a> <span class="k">else</span>
<a name="line-455"></a> <span class="p">{</span>
<a name="line-456"></a> <span class="n">emit</span> <span class="n">signalAddPhotoSucceeded</span><span class="p">();</span>
<a name="line-457"></a> <span class="p">}</span>
<a name="line-458"></a><span class="p">}</span>
<a name="line-459"></a>
<a name="line-460"></a><span class="kt">void</span> <span class="n">ODTalker</span><span class="o">::</span><span class="n">parseResponseUserName</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
<a name="line-461"></a><span class="p">{</span>
<a name="line-462"></a> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
<a name="line-463"></a> <span class="n">QString</span> <span class="n">name</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">object</span><span class="p">()[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;displayName&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">();</span>
<a name="line-464"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-465"></a> <span class="n">emit</span> <span class="nf">signalSetUserName</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
<a name="line-466"></a><span class="p">}</span>
<a name="line-467"></a>
<a name="line-468"></a><span class="kt">void</span> <span class="n">ODTalker</span><span class="o">::</span><span class="n">parseResponseListFolders</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
<a name="line-469"></a><span class="p">{</span>
<a name="line-470"></a> <span class="n">QJsonParseError</span> <span class="n">err</span><span class="p">;</span>
<a name="line-471"></a> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">err</span><span class="p">);</span>
<a name="line-472"></a>
<a name="line-473"></a> <span class="k">if</span> <span class="p">(</span><span class="n">err</span><span class="p">.</span><span class="n">error</span> <span class="o">!=</span> <span class="n">QJsonParseError</span><span class="o">::</span><span class="n">NoError</span><span class="p">)</span>
<a name="line-474"></a> <span class="p">{</span>
<a name="line-475"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-476"></a> <span class="n">emit</span> <span class="nf">signalListAlbumsFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to list folders&quot;</span><span class="p">));</span>
<a name="line-477"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-478"></a> <span class="p">}</span>
<a name="line-479"></a>
<a name="line-480"></a> <span class="n">QJsonObject</span> <span class="n">jsonObject</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">object</span><span class="p">();</span>
<a name="line-481"></a> <span class="c1">//qCDebug(DIGIKAM_WEBSERVICES_LOG) &lt;&lt; &quot;Json: &quot; &lt;&lt; doc;</span>
<a name="line-482"></a> <span class="n">QJsonArray</span> <span class="n">jsonArray</span> <span class="o">=</span> <span class="n">jsonObject</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;value&quot;</span><span class="p">)].</span><span class="n">toArray</span><span class="p">();</span>
<a name="line-483"></a>
<a name="line-484"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">folderList</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-485"></a> <span class="p">{</span>
<a name="line-486"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">folderList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">qMakePair</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;root&quot;</span><span class="p">)));</span>
<a name="line-487"></a> <span class="p">}</span>
<a name="line-488"></a>
<a name="line-489"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">QJsonValue</span><span class="o">&amp;</span> <span class="n">value</span><span class="p">,</span> <span class="n">jsonArray</span><span class="p">)</span>
<a name="line-490"></a> <span class="p">{</span>
<a name="line-491"></a> <span class="n">QString</span> <span class="n">path</span><span class="p">;</span>
<a name="line-492"></a> <span class="n">QString</span> <span class="n">listName</span><span class="p">;</span>
<a name="line-493"></a> <span class="n">QString</span> <span class="n">folderPath</span><span class="p">;</span>
<a name="line-494"></a> <span class="n">QString</span> <span class="n">folderName</span><span class="p">;</span>
<a name="line-495"></a> <span class="n">QJsonObject</span> <span class="n">folder</span><span class="p">;</span>
<a name="line-496"></a> <span class="n">QJsonObject</span> <span class="n">parent</span><span class="p">;</span>
<a name="line-497"></a>
<a name="line-498"></a> <span class="n">QJsonObject</span> <span class="n">obj</span> <span class="o">=</span> <span class="n">value</span><span class="p">.</span><span class="n">toObject</span><span class="p">();</span>
<a name="line-499"></a> <span class="n">folder</span> <span class="o">=</span> <span class="n">obj</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;folder&quot;</span><span class="p">)].</span><span class="n">toObject</span><span class="p">();</span>
<a name="line-500"></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">obj</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;parentReference&quot;</span><span class="p">)].</span><span class="n">toObject</span><span class="p">();</span>
<a name="line-501"></a>
<a name="line-502"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">folder</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-503"></a> <span class="p">{</span>
<a name="line-504"></a> <span class="n">folderPath</span> <span class="o">=</span> <span class="n">parent</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;path&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">();</span>
<a name="line-505"></a> <span class="n">folderName</span> <span class="o">=</span> <span class="n">obj</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;name&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">();</span>
<a name="line-506"></a>
<a name="line-507"></a> <span class="n">path</span> <span class="o">=</span> <span class="n">folderPath</span><span class="p">.</span><span class="n">section</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;root:&quot;</span><span class="p">),</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">+</span>
<a name="line-508"></a> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">folderName</span><span class="p">;</span>
<a name="line-509"></a> <span class="n">path</span> <span class="o">=</span> <span class="n">QUrl</span><span class="p">(</span><span class="n">path</span><span class="p">).</span><span class="n">toString</span><span class="p">(</span><span class="n">QUrl</span><span class="o">::</span><span class="n">FullyDecoded</span><span class="p">);</span>
<a name="line-510"></a> <span class="n">listName</span> <span class="o">=</span> <span class="n">path</span><span class="p">.</span><span class="n">section</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">),</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-511"></a>
<a name="line-512"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">folderList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">qMakePair</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">listName</span><span class="p">));</span>
<a name="line-513"></a>
<a name="line-514"></a> <span class="k">if</span> <span class="p">(</span><span class="n">folder</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;childCount&quot;</span><span class="p">)].</span><span class="n">toInt</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-515"></a> <span class="p">{</span>
<a name="line-516"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">nextFolder</span> <span class="o">&lt;&lt;</span> <span class="n">path</span><span class="p">;</span>
<a name="line-517"></a> <span class="p">}</span>
<a name="line-518"></a> <span class="p">}</span>
<a name="line-519"></a> <span class="p">}</span>
<a name="line-520"></a>
<a name="line-521"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">nextFolder</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-522"></a> <span class="p">{</span>
<a name="line-523"></a> <span class="n">listFolders</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">nextFolder</span><span class="p">.</span><span class="n">takeLast</span><span class="p">());</span>
<a name="line-524"></a> <span class="p">}</span>
<a name="line-525"></a> <span class="k">else</span>
<a name="line-526"></a> <span class="p">{</span>
<a name="line-527"></a> <span class="n">std</span><span class="o">::</span><span class="n">sort</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">folderList</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">folderList</span><span class="p">.</span><span class="n">end</span><span class="p">());</span>
<a name="line-528"></a>
<a name="line-529"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-530"></a> <span class="n">emit</span> <span class="nf">signalListAlbumsDone</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">folderList</span><span class="p">);</span>
<a name="line-531"></a> <span class="p">}</span>
<a name="line-532"></a><span class="p">}</span>
<a name="line-533"></a>
<a name="line-534"></a><span class="kt">void</span> <span class="n">ODTalker</span><span class="o">::</span><span class="n">parseResponseCreateFolder</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
<a name="line-535"></a><span class="p">{</span>
<a name="line-536"></a><span class="hll"> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">);</span><span class='error2'>&lt;--- Shadowed declaration</span>
</span><a name="line-537"></a> <span class="n">QJsonObject</span> <span class="n">jsonObject</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">object</span><span class="p">();</span>
<a name="line-538"></a> <span class="kt">bool</span> <span class="n">fail</span> <span class="o">=</span> <span class="n">jsonObject</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;error&quot;</span><span class="p">));</span>
<a name="line-539"></a>
<a name="line-540"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-541"></a>
<a name="line-542"></a> <span class="k">if</span> <span class="p">(</span><span class="n">fail</span><span class="p">)</span>
<a name="line-543"></a> <span class="p">{</span>
<a name="line-544"></a> <span class="n">QJsonParseError</span> <span class="n">err</span><span class="p">;</span>
<a name="line-545"></a><span class="hll"> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">err</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-546"></a> <span class="n">emit</span> <span class="nf">signalCreateFolderFailed</span><span class="p">(</span><span class="n">jsonObject</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;error_summary&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">());</span>
<a name="line-547"></a> <span class="p">}</span>
<a name="line-548"></a> <span class="k">else</span>
<a name="line-549"></a> <span class="p">{</span>
<a name="line-550"></a> <span class="n">emit</span> <span class="n">signalCreateFolderSucceeded</span><span class="p">();</span>
<a name="line-551"></a> <span class="p">}</span>
<a name="line-552"></a><span class="p">}</span>
<a name="line-553"></a>
<a name="line-554"></a><span class="kt">void</span> <span class="n">ODTalker</span><span class="o">::</span><span class="n">writeSettings</span><span class="p">()</span>
<a name="line-555"></a><span class="p">{</span>
<a name="line-556"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">beginGroup</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceName</span><span class="p">);</span>
<a name="line-557"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">setValue</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceTime</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">expiryTime</span><span class="p">);</span>
<a name="line-558"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">setValue</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceKey</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span><span class="p">);</span>
<a name="line-559"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">endGroup</span><span class="p">();</span>
<a name="line-560"></a><span class="p">}</span>
<a name="line-561"></a>
<a name="line-562"></a><span class="kt">void</span> <span class="n">ODTalker</span><span class="o">::</span><span class="n">readSettings</span><span class="p">()</span>
<a name="line-563"></a><span class="p">{</span>
<a name="line-564"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">beginGroup</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceName</span><span class="p">);</span>
<a name="line-565"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">expiryTime</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">value</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceTime</span><span class="p">).</span><span class="n">toDateTime</span><span class="p">();</span>
<a name="line-566"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">value</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceKey</span><span class="p">).</span><span class="n">toString</span><span class="p">();</span>
<a name="line-567"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">endGroup</span><span class="p">();</span>
<a name="line-568"></a>
<a name="line-569"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-570"></a> <span class="p">{</span>
<a name="line-571"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Linking...&quot;</span><span class="p">;</span>
<a name="line-572"></a> <span class="n">link</span><span class="p">();</span>
<a name="line-573"></a> <span class="p">}</span>
<a name="line-574"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">QDateTime</span><span class="o">::</span><span class="n">currentDateTime</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">expiryTime</span><span class="p">)</span>
<a name="line-575"></a> <span class="p">{</span>
<a name="line-576"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Access token has expired&quot;</span><span class="p">;</span>
<a name="line-577"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span> <span class="o">=</span> <span class="n">QString</span><span class="p">();</span>
<a name="line-578"></a> <span class="n">link</span><span class="p">();</span>
<a name="line-579"></a> <span class="p">}</span>
<a name="line-580"></a> <span class="k">else</span>
<a name="line-581"></a> <span class="p">{</span>
<a name="line-582"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Already Linked&quot;</span><span class="p">;</span>
<a name="line-583"></a> <span class="n">emit</span> <span class="nf">oneDriveLinkingSucceeded</span><span class="p">();</span>
<a name="line-584"></a> <span class="p">}</span>
<a name="line-585"></a><span class="p">}</span>
<a name="line-586"></a>
<a name="line-587"></a><span class="p">}</span> <span class="c1">// namespace DigikamGenericOneDrivePlugin</span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/11.html b/static/reports/cppcheck/master/11.html
index 88f5f4914..90793e301 100644
--- a/static/reports/cppcheck/master/11.html
+++ b/static/reports/cppcheck/master/11.html
@@ -1,1391 +1,1391 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/dplugins/generic/webservices/pinterest/ptalker.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/dplugins/generic/webservices/pinterest/ptalker.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> ptalker.cpp</p>
<a href='11.html#line-560'> shadowVar 560</a><a href='11.html#line-561'> shadowVar 561</a><a href='11.html#line-565'> shadowVar 565</a><a href='11.html#line-566'> shadowVar 566</a><a href='11.html#line-580'> shadowVar 580</a><a href='11.html#line-589'> shadowVar 589</a>
</div>
<div id="content">
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
<a name="line-6"></a><span class="cm"> * Date : 2018-05-20</span>
<a name="line-7"></a><span class="cm"> * Description : a tool to export images to Pinterest web service</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2018 by Tarek Talaat &lt;tarektalaat93 at gmail dot com&gt;</span>
<a name="line-10"></a><span class="cm"> *</span>
<a name="line-11"></a><span class="cm"> * This program is free software; you can redistribute it</span>
<a name="line-12"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
<a name="line-13"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
<a name="line-14"></a><span class="cm"> * either version 2, or (at your option) any later version.</span>
<a name="line-15"></a><span class="cm"> *</span>
<a name="line-16"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
<a name="line-17"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="line-18"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
<a name="line-19"></a><span class="cm"> * GNU General Public License for more details.</span>
<a name="line-20"></a><span class="cm"> *</span>
<a name="line-21"></a><span class="cm"> * ============================================================ */</span>
<a name="line-22"></a>
<a name="line-23"></a><span class="cp">#include</span> <span class="cpf">&quot;ptalker.h&quot;</span><span class="cp"></span>
<a name="line-24"></a>
<a name="line-25"></a><span class="c1">// Qt includes</span>
<a name="line-26"></a>
<a name="line-27"></a><span class="cp">#include</span> <span class="cpf">&lt;QJsonDocument&gt;</span><span class="cp"></span>
<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;QJsonParseError&gt;</span><span class="cp"></span>
<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QJsonObject&gt;</span><span class="cp"></span>
<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QJsonValue&gt;</span><span class="cp"></span>
<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QJsonArray&gt;</span><span class="cp"></span>
<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QByteArray&gt;</span><span class="cp"></span>
<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QList&gt;</span><span class="cp"></span>
<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QPair&gt;</span><span class="cp"></span>
<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QFileInfo&gt;</span><span class="cp"></span>
<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QWidget&gt;</span><span class="cp"></span>
<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&lt;QMessageBox&gt;</span><span class="cp"></span>
<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&lt;QApplication&gt;</span><span class="cp"></span>
<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&lt;QDesktopServices&gt;</span><span class="cp"></span>
<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&lt;QUrlQuery&gt;</span><span class="cp"></span>
<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&lt;QHttpMultiPart&gt;</span><span class="cp"></span>
<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&lt;QNetworkAccessManager&gt;</span><span class="cp"></span>
<a name="line-43"></a>
<a name="line-44"></a><span class="c1">// KDE includes</span>
<a name="line-45"></a>
<a name="line-46"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
<a name="line-47"></a><span class="cp">#include</span> <span class="cpf">&lt;kwindowconfig.h&gt;</span><span class="cp"></span>
<a name="line-48"></a>
<a name="line-49"></a><span class="c1">// Local includes</span>
<a name="line-50"></a>
<a name="line-51"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
<a name="line-52"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_version.h&quot;</span><span class="cp"></span>
<a name="line-53"></a><span class="cp">#include</span> <span class="cpf">&quot;wstoolutils.h&quot;</span><span class="cp"></span>
<a name="line-54"></a><span class="cp">#include</span> <span class="cpf">&quot;pwindow.h&quot;</span><span class="cp"></span>
<a name="line-55"></a><span class="cp">#include</span> <span class="cpf">&quot;pitem.h&quot;</span><span class="cp"></span>
<a name="line-56"></a><span class="cp">#include</span> <span class="cpf">&quot;webbrowserdlg.h&quot;</span><span class="cp"></span>
<a name="line-57"></a><span class="cp">#include</span> <span class="cpf">&quot;previewloadthread.h&quot;</span><span class="cp"></span>
<a name="line-58"></a>
<a name="line-59"></a><span class="k">namespace</span> <span class="n">DigikamGenericPinterestPlugin</span>
<a name="line-60"></a><span class="p">{</span>
<a name="line-61"></a>
<a name="line-62"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">PTalker</span><span class="o">::</span><span class="n">Private</span>
<a name="line-63"></a><span class="p">{</span>
<a name="line-64"></a><span class="k">public</span><span class="o">:</span>
<a name="line-65"></a>
<a name="line-66"></a> <span class="k">enum</span> <span class="n">State</span>
<a name="line-67"></a> <span class="p">{</span>
<a name="line-68"></a> <span class="n">P_USERNAME</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
<a name="line-69"></a> <span class="n">P_LISTBOARDS</span><span class="p">,</span>
<a name="line-70"></a> <span class="n">P_CREATEBOARD</span><span class="p">,</span>
<a name="line-71"></a> <span class="n">P_ADDPIN</span><span class="p">,</span>
<a name="line-72"></a> <span class="n">P_ACCESSTOKEN</span>
<a name="line-73"></a> <span class="p">};</span>
<a name="line-74"></a>
<a name="line-75"></a><span class="k">public</span><span class="o">:</span>
<a name="line-76"></a>
<a name="line-77"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
<a name="line-78"></a> <span class="o">:</span> <span class="n">parent</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-79"></a> <span class="n">netMngr</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-80"></a> <span class="n">reply</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-81"></a> <span class="n">settings</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-82"></a> <span class="n">state</span><span class="p">(</span><span class="n">P_USERNAME</span><span class="p">),</span>
<a name="line-83"></a> <span class="n">browser</span><span class="p">(</span><span class="k">nullptr</span><span class="p">)</span>
<a name="line-84"></a> <span class="p">{</span>
<a name="line-85"></a> <span class="n">clientId</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;4983380570301022071&quot;</span><span class="p">);</span>
<a name="line-86"></a> <span class="n">clientSecret</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;2a698db679125930d922a2dfb897e16b668a67c6f614593636e83fc3d8d9b47d&quot;</span><span class="p">);</span>
<a name="line-87"></a>
<a name="line-88"></a> <span class="n">authUrl</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://api.pinterest.com/oauth/&quot;</span><span class="p">);</span>
<a name="line-89"></a> <span class="n">tokenUrl</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://api.pinterest.com/v1/oauth/token&quot;</span><span class="p">);</span>
<a name="line-90"></a> <span class="n">redirectUrl</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://login.live.com/oauth20_desktop.srf&quot;</span><span class="p">);</span>
<a name="line-91"></a> <span class="n">scope</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;read_public,write_public&quot;</span><span class="p">);</span>
<a name="line-92"></a> <span class="n">serviceName</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Pinterest&quot;</span><span class="p">);</span>
<a name="line-93"></a> <span class="n">serviceKey</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;access_token&quot;</span><span class="p">);</span>
<a name="line-94"></a> <span class="p">}</span>
<a name="line-95"></a>
<a name="line-96"></a><span class="k">public</span><span class="o">:</span>
<a name="line-97"></a>
<a name="line-98"></a> <span class="n">QString</span> <span class="n">clientId</span><span class="p">;</span>
<a name="line-99"></a> <span class="n">QString</span> <span class="n">clientSecret</span><span class="p">;</span>
<a name="line-100"></a> <span class="n">QString</span> <span class="n">authUrl</span><span class="p">;</span>
<a name="line-101"></a> <span class="n">QString</span> <span class="n">tokenUrl</span><span class="p">;</span>
<a name="line-102"></a> <span class="n">QString</span> <span class="n">redirectUrl</span><span class="p">;</span>
<a name="line-103"></a> <span class="n">QString</span> <span class="n">accessToken</span><span class="p">;</span>
<a name="line-104"></a> <span class="n">QString</span> <span class="n">scope</span><span class="p">;</span>
<a name="line-105"></a> <span class="n">QString</span> <span class="n">userName</span><span class="p">;</span>
<a name="line-106"></a> <span class="n">QString</span> <span class="n">serviceName</span><span class="p">;</span>
<a name="line-107"></a> <span class="n">QString</span> <span class="n">serviceKey</span><span class="p">;</span>
<a name="line-108"></a>
<a name="line-109"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="n">parent</span><span class="p">;</span>
<a name="line-110"></a>
<a name="line-111"></a> <span class="n">QNetworkAccessManager</span><span class="o">*</span> <span class="n">netMngr</span><span class="p">;</span>
<a name="line-112"></a> <span class="n">QNetworkReply</span><span class="o">*</span> <span class="n">reply</span><span class="p">;</span>
<a name="line-113"></a>
<a name="line-114"></a> <span class="n">QSettings</span><span class="o">*</span> <span class="n">settings</span><span class="p">;</span>
<a name="line-115"></a>
<a name="line-116"></a> <span class="n">State</span> <span class="n">state</span><span class="p">;</span>
<a name="line-117"></a>
<a name="line-118"></a> <span class="n">DMetadata</span> <span class="n">meta</span><span class="p">;</span>
<a name="line-119"></a>
<a name="line-120"></a> <span class="n">QMap</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">urlParametersMap</span><span class="p">;</span>
<a name="line-121"></a>
<a name="line-122"></a> <span class="n">WebBrowserDlg</span><span class="o">*</span> <span class="n">browser</span><span class="p">;</span>
<a name="line-123"></a><span class="p">};</span>
<a name="line-124"></a>
<a name="line-125"></a><span class="n">PTalker</span><span class="o">::</span><span class="n">PTalker</span><span class="p">(</span><span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span><span class="p">)</span>
<a name="line-126"></a> <span class="o">:</span> <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">Private</span><span class="p">)</span>
<a name="line-127"></a><span class="p">{</span>
<a name="line-128"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span><span class="p">;</span>
<a name="line-129"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QNetworkAccessManager</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-130"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span> <span class="o">=</span> <span class="n">WSToolUtils</span><span class="o">::</span><span class="n">getOauthSettings</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-131"></a>
<a name="line-132"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">finished</span><span class="p">(</span><span class="n">QNetworkReply</span><span class="o">*</span><span class="p">)),</span>
<a name="line-133"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotFinished</span><span class="p">(</span><span class="n">QNetworkReply</span><span class="o">*</span><span class="p">)));</span>
<a name="line-134"></a>
<a name="line-135"></a> <span class="n">connect</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">pinterestLinkingFailed</span><span class="p">()),</span>
<a name="line-136"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotLinkingFailed</span><span class="p">()));</span>
<a name="line-137"></a>
<a name="line-138"></a> <span class="n">connect</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">pinterestLinkingSucceeded</span><span class="p">()),</span>
<a name="line-139"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotLinkingSucceeded</span><span class="p">()));</span>
<a name="line-140"></a><span class="p">}</span>
<a name="line-141"></a>
<a name="line-142"></a><span class="n">PTalker</span><span class="o">::~</span><span class="n">PTalker</span><span class="p">()</span>
<a name="line-143"></a><span class="p">{</span>
<a name="line-144"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
<a name="line-145"></a> <span class="p">{</span>
<a name="line-146"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">abort</span><span class="p">();</span>
<a name="line-147"></a> <span class="p">}</span>
<a name="line-148"></a>
<a name="line-149"></a> <span class="n">WSToolUtils</span><span class="o">::</span><span class="n">removeTemporaryDir</span><span class="p">(</span><span class="s">&quot;pinterest&quot;</span><span class="p">);</span>
<a name="line-150"></a>
<a name="line-151"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
<a name="line-152"></a><span class="p">}</span>
<a name="line-153"></a>
<a name="line-154"></a><span class="kt">void</span> <span class="n">PTalker</span><span class="o">::</span><span class="n">link</span><span class="p">()</span>
<a name="line-155"></a><span class="p">{</span>
<a name="line-156"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-157"></a>
<a name="line-158"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">authUrl</span><span class="p">);</span>
<a name="line-159"></a> <span class="n">QUrlQuery</span> <span class="nf">query</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
<a name="line-160"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;client_id&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">clientId</span><span class="p">);</span>
<a name="line-161"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;scope&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">scope</span><span class="p">);</span>
<a name="line-162"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;redirect_uri&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">redirectUrl</span><span class="p">);</span>
<a name="line-163"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;response_type&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;code&quot;</span><span class="p">));</span>
<a name="line-164"></a> <span class="n">url</span><span class="p">.</span><span class="n">setQuery</span><span class="p">(</span><span class="n">query</span><span class="p">);</span>
<a name="line-165"></a>
<a name="line-166"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">browser</span><span class="p">;</span>
<a name="line-167"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">browser</span> <span class="o">=</span> <span class="k">new</span> <span class="n">WebBrowserDlg</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">,</span> <span class="nb">true</span><span class="p">);</span>
<a name="line-168"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">browser</span><span class="o">-&gt;</span><span class="n">setModal</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-169"></a>
<a name="line-170"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">browser</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">urlChanged</span><span class="p">(</span><span class="n">QUrl</span><span class="p">)),</span>
<a name="line-171"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotCatchUrl</span><span class="p">(</span><span class="n">QUrl</span><span class="p">)));</span>
<a name="line-172"></a>
<a name="line-173"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">browser</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">closeView</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-174"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalBusy</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
<a name="line-175"></a>
<a name="line-176"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">browser</span><span class="o">-&gt;</span><span class="n">show</span><span class="p">();</span>
<a name="line-177"></a><span class="p">}</span>
<a name="line-178"></a>
<a name="line-179"></a><span class="kt">void</span> <span class="n">PTalker</span><span class="o">::</span><span class="n">unLink</span><span class="p">()</span>
<a name="line-180"></a><span class="p">{</span>
<a name="line-181"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span> <span class="o">=</span> <span class="n">QString</span><span class="p">();</span>
<a name="line-182"></a>
<a name="line-183"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">beginGroup</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceName</span><span class="p">);</span>
<a name="line-184"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">remove</span><span class="p">(</span><span class="n">QString</span><span class="p">());</span>
<a name="line-185"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">endGroup</span><span class="p">();</span>
<a name="line-186"></a>
<a name="line-187"></a> <span class="n">emit</span> <span class="nf">pinterestLinkingSucceeded</span><span class="p">();</span>
<a name="line-188"></a><span class="p">}</span>
<a name="line-189"></a>
<a name="line-190"></a><span class="kt">void</span> <span class="n">PTalker</span><span class="o">::</span><span class="n">slotCatchUrl</span><span class="p">(</span><span class="k">const</span> <span class="n">QUrl</span><span class="o">&amp;</span> <span class="n">url</span><span class="p">)</span>
<a name="line-191"></a><span class="p">{</span>
<a name="line-192"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">urlParametersMap</span> <span class="o">=</span> <span class="n">ParseUrlParameters</span><span class="p">(</span><span class="n">url</span><span class="p">.</span><span class="n">toString</span><span class="p">());</span>
<a name="line-193"></a> <span class="n">QString</span> <span class="n">code</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">urlParametersMap</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;code&quot;</span><span class="p">));</span>
<a name="line-194"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Received URL from webview in link function: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">url</span> <span class="p">;</span>
<a name="line-195"></a>
<a name="line-196"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">code</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-197"></a> <span class="p">{</span>
<a name="line-198"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;CODE Received&quot;</span><span class="p">;</span>
<a name="line-199"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">browser</span><span class="o">-&gt;</span><span class="n">close</span><span class="p">();</span>
<a name="line-200"></a> <span class="n">getToken</span><span class="p">(</span><span class="n">code</span><span class="p">);</span>
<a name="line-201"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-202"></a> <span class="p">}</span>
<a name="line-203"></a><span class="p">}</span>
<a name="line-204"></a>
<a name="line-205"></a><span class="kt">void</span> <span class="n">PTalker</span><span class="o">::</span><span class="n">getToken</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">code</span><span class="p">)</span>
<a name="line-206"></a><span class="p">{</span>
<a name="line-207"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Code: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">code</span><span class="p">;</span>
<a name="line-208"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tokenUrl</span><span class="p">);</span>
<a name="line-209"></a> <span class="n">QUrlQuery</span> <span class="nf">query</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
<a name="line-210"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;grant_type&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;authorization_code&quot;</span><span class="p">));</span>
<a name="line-211"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;client_id&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">clientId</span><span class="p">);</span>
<a name="line-212"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;client_secret&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">clientSecret</span><span class="p">);</span>
<a name="line-213"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;code&quot;</span><span class="p">),</span> <span class="n">code</span><span class="p">);</span>
<a name="line-214"></a> <span class="n">url</span><span class="p">.</span><span class="n">setQuery</span><span class="p">(</span><span class="n">query</span><span class="p">);</span>
<a name="line-215"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Token Request URL: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">url</span><span class="p">.</span><span class="n">toString</span><span class="p">();</span>
<a name="line-216"></a>
<a name="line-217"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
<a name="line-218"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/x-www-form-urlencoded&quot;</span><span class="p">));</span>
<a name="line-219"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Accept&quot;</span><span class="p">,</span> <span class="s">&quot;application/json&quot;</span><span class="p">);</span>
<a name="line-220"></a>
<a name="line-221"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">QByteArray</span><span class="p">());</span>
<a name="line-222"></a>
<a name="line-223"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">P_ACCESSTOKEN</span><span class="p">;</span>
<a name="line-224"></a><span class="p">}</span>
<a name="line-225"></a>
<a name="line-226"></a><span class="n">QMap</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">PTalker</span><span class="o">::</span><span class="n">ParseUrlParameters</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">url</span><span class="p">)</span>
<a name="line-227"></a><span class="p">{</span>
<a name="line-228"></a> <span class="n">QMap</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">urlParameters</span><span class="p">;</span>
<a name="line-229"></a>
<a name="line-230"></a> <span class="k">if</span> <span class="p">(</span><span class="n">url</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;?&#39;</span><span class="p">))</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<a name="line-231"></a> <span class="p">{</span>
<a name="line-232"></a> <span class="k">return</span> <span class="n">urlParameters</span><span class="p">;</span>
<a name="line-233"></a> <span class="p">}</span>
<a name="line-234"></a>
<a name="line-235"></a> <span class="n">QString</span> <span class="n">tmp</span> <span class="o">=</span> <span class="n">url</span><span class="p">.</span><span class="n">right</span><span class="p">(</span><span class="n">url</span><span class="p">.</span><span class="n">length</span><span class="p">()</span><span class="o">-</span><span class="n">url</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;?&#39;</span><span class="p">))</span> <span class="o">-</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-236"></a> <span class="n">QStringList</span> <span class="n">paramlist</span> <span class="o">=</span> <span class="n">tmp</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;&amp;&#39;</span><span class="p">));</span>
<a name="line-237"></a>
<a name="line-238"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">paramlist</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-239"></a> <span class="p">{</span>
<a name="line-240"></a> <span class="n">QStringList</span> <span class="n">paramarg</span> <span class="o">=</span> <span class="n">paramlist</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">split</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;=&#39;</span><span class="p">));</span>
<a name="line-241"></a>
<a name="line-242"></a> <span class="k">if</span> <span class="p">(</span><span class="n">paramarg</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2</span><span class="p">)</span>
<a name="line-243"></a> <span class="p">{</span>
<a name="line-244"></a> <span class="n">urlParameters</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">paramarg</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">paramarg</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="mi">1</span><span class="p">));</span>
<a name="line-245"></a> <span class="p">}</span>
<a name="line-246"></a> <span class="p">}</span>
<a name="line-247"></a>
<a name="line-248"></a> <span class="k">return</span> <span class="n">urlParameters</span><span class="p">;</span>
<a name="line-249"></a><span class="p">}</span>
<a name="line-250"></a>
<a name="line-251"></a><span class="kt">void</span> <span class="n">PTalker</span><span class="o">::</span><span class="n">slotLinkingFailed</span><span class="p">()</span>
<a name="line-252"></a><span class="p">{</span>
<a name="line-253"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;LINK to Pinterest fail&quot;</span><span class="p">;</span>
<a name="line-254"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-255"></a><span class="p">}</span>
<a name="line-256"></a>
<a name="line-257"></a><span class="kt">void</span> <span class="n">PTalker</span><span class="o">::</span><span class="n">slotLinkingSucceeded</span><span class="p">()</span>
<a name="line-258"></a><span class="p">{</span>
<a name="line-259"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-260"></a> <span class="p">{</span>
<a name="line-261"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;UNLINK to Pinterest ok&quot;</span><span class="p">;</span>
<a name="line-262"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-263"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-264"></a> <span class="p">}</span>
<a name="line-265"></a>
<a name="line-266"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;LINK to Pinterest ok&quot;</span><span class="p">;</span>
<a name="line-267"></a> <span class="n">writeSettings</span><span class="p">();</span>
<a name="line-268"></a> <span class="n">emit</span> <span class="nf">signalLinkingSucceeded</span><span class="p">();</span>
<a name="line-269"></a><span class="p">}</span>
<a name="line-270"></a>
<a name="line-271"></a><span class="kt">bool</span> <span class="n">PTalker</span><span class="o">::</span><span class="n">authenticated</span><span class="p">()</span>
<a name="line-272"></a><span class="p">{</span>
<a name="line-273"></a> <span class="k">return</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">());</span>
<a name="line-274"></a><span class="p">}</span>
<a name="line-275"></a>
<a name="line-276"></a><span class="kt">void</span> <span class="n">PTalker</span><span class="o">::</span><span class="n">cancel</span><span class="p">()</span>
<a name="line-277"></a><span class="p">{</span>
<a name="line-278"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
<a name="line-279"></a> <span class="p">{</span>
<a name="line-280"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">abort</span><span class="p">();</span>
<a name="line-281"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-282"></a> <span class="p">}</span>
<a name="line-283"></a>
<a name="line-284"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-285"></a><span class="p">}</span>
<a name="line-286"></a>
<a name="line-287"></a><span class="kt">void</span> <span class="n">PTalker</span><span class="o">::</span><span class="n">createBoard</span><span class="p">(</span><span class="n">QString</span><span class="o">&amp;</span> <span class="n">boardName</span><span class="p">)</span>
<a name="line-288"></a><span class="p">{</span>
<a name="line-289"></a> <span class="n">QUrl</span> <span class="n">url</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://api.pinterest.com/v1/boards/&quot;</span><span class="p">));</span>
<a name="line-290"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
<a name="line-291"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/json&quot;</span><span class="p">));</span>
<a name="line-292"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;Bearer %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span><span class="p">).</span><span class="n">toUtf8</span><span class="p">());</span>
<a name="line-293"></a>
<a name="line-294"></a> <span class="n">QByteArray</span> <span class="n">postData</span> <span class="o">=</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;{</span><span class="se">\&quot;</span><span class="s">name</span><span class="se">\&quot;</span><span class="s">: </span><span class="se">\&quot;</span><span class="s">%1</span><span class="se">\&quot;</span><span class="s">}&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">boardName</span><span class="p">).</span><span class="n">toUtf8</span><span class="p">();</span>
<a name="line-295"></a><span class="cm">/*</span>
<a name="line-296"></a><span class="cm"> qCDebug(DIGIKAM_WEBSERVICES_LOG) &lt;&lt; &quot;createBoard:&quot; &lt;&lt; postData;</span>
<a name="line-297"></a><span class="cm">*/</span>
<a name="line-298"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">postData</span><span class="p">);</span>
<a name="line-299"></a>
<a name="line-300"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">P_CREATEBOARD</span><span class="p">;</span>
<a name="line-301"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-302"></a><span class="p">}</span>
<a name="line-303"></a>
<a name="line-304"></a><span class="kt">void</span> <span class="n">PTalker</span><span class="o">::</span><span class="n">getUserName</span><span class="p">()</span>
<a name="line-305"></a><span class="p">{</span>
<a name="line-306"></a> <span class="n">QUrl</span> <span class="n">url</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://api.pinterest.com/v1/me/?fields=username&quot;</span><span class="p">));</span>
<a name="line-307"></a>
<a name="line-308"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
<a name="line-309"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;Bearer %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span><span class="p">).</span><span class="n">toUtf8</span><span class="p">());</span>
<a name="line-310"></a>
<a name="line-311"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">get</span><span class="p">(</span><span class="n">netRequest</span><span class="p">);</span>
<a name="line-312"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">P_USERNAME</span><span class="p">;</span>
<a name="line-313"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-314"></a><span class="p">}</span>
<a name="line-315"></a>
<a name="line-316"></a><span class="cm">/**</span>
<a name="line-317"></a><span class="cm"> * Get list of boards by parsing json sent by pinterest</span>
<a name="line-318"></a><span class="cm"> */</span>
<a name="line-319"></a><span class="kt">void</span> <span class="n">PTalker</span><span class="o">::</span><span class="n">listBoards</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="cm">/*path*/</span><span class="p">)</span>
<a name="line-320"></a><span class="p">{</span>
<a name="line-321"></a> <span class="n">QUrl</span> <span class="n">url</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://api.pinterest.com/v1/me/boards/&quot;</span><span class="p">));;</span>
<a name="line-322"></a>
<a name="line-323"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
<a name="line-324"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;Bearer %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span><span class="p">).</span><span class="n">toUtf8</span><span class="p">());</span>
<a name="line-325"></a> <span class="c1">//netRequest.setHeader(QNetworkRequest::ContentTypeHeader, QLatin1String(&quot;application/json&quot;));</span>
<a name="line-326"></a>
<a name="line-327"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">get</span><span class="p">(</span><span class="n">netRequest</span><span class="p">);</span>
<a name="line-328"></a>
<a name="line-329"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">P_LISTBOARDS</span><span class="p">;</span>
<a name="line-330"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-331"></a><span class="p">}</span>
<a name="line-332"></a>
<a name="line-333"></a><span class="kt">bool</span> <span class="n">PTalker</span><span class="o">::</span><span class="n">addPin</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">imgPath</span><span class="p">,</span>
<a name="line-334"></a> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">uploadBoard</span><span class="p">,</span>
<a name="line-335"></a> <span class="kt">bool</span> <span class="n">rescale</span><span class="p">,</span>
<a name="line-336"></a> <span class="kt">int</span> <span class="n">maxDim</span><span class="p">,</span>
<a name="line-337"></a> <span class="kt">int</span> <span class="n">imageQuality</span><span class="p">)</span>
<a name="line-338"></a><span class="p">{</span>
<a name="line-339"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
<a name="line-340"></a> <span class="p">{</span>
<a name="line-341"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">abort</span><span class="p">();</span>
<a name="line-342"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-343"></a> <span class="p">}</span>
<a name="line-344"></a>
<a name="line-345"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-346"></a>
<a name="line-347"></a> <span class="n">QImage</span> <span class="n">image</span> <span class="o">=</span> <span class="n">PreviewLoadThread</span><span class="o">::</span><span class="n">loadHighQualitySynchronously</span><span class="p">(</span><span class="n">imgPath</span><span class="p">).</span><span class="n">copyQImage</span><span class="p">();</span>
<a name="line-348"></a>
<a name="line-349"></a> <span class="k">if</span> <span class="p">(</span><span class="n">image</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-350"></a> <span class="p">{</span>
<a name="line-351"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-352"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-353"></a> <span class="p">}</span>
<a name="line-354"></a>
<a name="line-355"></a> <span class="n">QString</span> <span class="n">path</span> <span class="o">=</span> <span class="n">WSToolUtils</span><span class="o">::</span><span class="n">makeTemporaryDir</span><span class="p">(</span><span class="s">&quot;pinterest&quot;</span><span class="p">).</span><span class="n">filePath</span><span class="p">(</span><span class="n">QFileInfo</span><span class="p">(</span><span class="n">imgPath</span><span class="p">)</span>
<a name="line-356"></a> <span class="p">.</span><span class="n">baseName</span><span class="p">().</span><span class="n">trimmed</span><span class="p">()</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;.jpg&quot;</span><span class="p">));</span>
<a name="line-357"></a>
<a name="line-358"></a> <span class="k">if</span> <span class="p">(</span><span class="n">rescale</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">image</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">maxDim</span> <span class="o">||</span> <span class="n">image</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">maxDim</span><span class="p">))</span>
<a name="line-359"></a> <span class="p">{</span>
<a name="line-360"></a> <span class="n">image</span> <span class="o">=</span> <span class="n">image</span><span class="p">.</span><span class="n">scaled</span><span class="p">(</span><span class="n">maxDim</span><span class="p">,</span> <span class="n">maxDim</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">KeepAspectRatio</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">SmoothTransformation</span><span class="p">);</span>
<a name="line-361"></a> <span class="p">}</span>
<a name="line-362"></a>
<a name="line-363"></a> <span class="n">image</span><span class="p">.</span><span class="n">save</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s">&quot;JPEG&quot;</span><span class="p">,</span> <span class="n">imageQuality</span><span class="p">);</span>
<a name="line-364"></a>
<a name="line-365"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">meta</span><span class="p">.</span><span class="n">load</span><span class="p">(</span><span class="n">imgPath</span><span class="p">))</span>
<a name="line-366"></a> <span class="p">{</span>
<a name="line-367"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">meta</span><span class="p">.</span><span class="n">setItemDimensions</span><span class="p">(</span><span class="n">image</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
<a name="line-368"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">meta</span><span class="p">.</span><span class="n">setItemOrientation</span><span class="p">(</span><span class="n">DMetadata</span><span class="o">::</span><span class="n">ORIENTATION_NORMAL</span><span class="p">);</span>
<a name="line-369"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">meta</span><span class="p">.</span><span class="n">setMetadataWritingMode</span><span class="p">((</span><span class="kt">int</span><span class="p">)</span><span class="n">DMetadata</span><span class="o">::</span><span class="n">WRITE_TO_FILE_ONLY</span><span class="p">);</span>
<a name="line-370"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">meta</span><span class="p">.</span><span class="n">save</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="nb">true</span><span class="p">);</span>
<a name="line-371"></a> <span class="p">}</span>
<a name="line-372"></a>
<a name="line-373"></a> <span class="n">QString</span> <span class="n">boardParam</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">userName</span> <span class="o">+</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">uploadBoard</span><span class="p">;</span>
<a name="line-374"></a>
<a name="line-375"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;https://api.pinterest.com/v1/pins/?access_token=%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span><span class="p">));</span>
<a name="line-376"></a>
<a name="line-377"></a> <span class="n">QHttpMultiPart</span><span class="o">*</span> <span class="k">const</span> <span class="n">multiPart</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QHttpMultiPart</span><span class="p">(</span><span class="n">QHttpMultiPart</span><span class="o">::</span><span class="n">FormDataType</span><span class="p">);</span>
<a name="line-378"></a>
<a name="line-379"></a> <span class="c1">// Board Section</span>
<a name="line-380"></a>
<a name="line-381"></a> <span class="n">QHttpPart</span> <span class="n">board</span><span class="p">;</span>
<a name="line-382"></a> <span class="n">QString</span> <span class="n">boardHeader</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;form-data; name=</span><span class="se">\&quot;</span><span class="s">board</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">)</span> <span class="p">;</span>
<a name="line-383"></a> <span class="n">board</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentDispositionHeader</span><span class="p">,</span> <span class="n">boardHeader</span><span class="p">);</span>
<a name="line-384"></a>
<a name="line-385"></a> <span class="n">QByteArray</span> <span class="n">postData</span> <span class="o">=</span> <span class="n">boardParam</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">();</span>
<a name="line-386"></a> <span class="n">board</span><span class="p">.</span><span class="n">setBody</span><span class="p">(</span><span class="n">postData</span><span class="p">);</span>
<a name="line-387"></a> <span class="n">multiPart</span><span class="o">-&gt;</span><span class="n">append</span><span class="p">(</span><span class="n">board</span><span class="p">);</span>
<a name="line-388"></a>
<a name="line-389"></a> <span class="c1">// Note section</span>
<a name="line-390"></a>
<a name="line-391"></a> <span class="n">QHttpPart</span> <span class="n">note</span><span class="p">;</span>
<a name="line-392"></a> <span class="n">QString</span> <span class="n">noteHeader</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;form-data; name=</span><span class="se">\&quot;</span><span class="s">note</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">)</span> <span class="p">;</span>
<a name="line-393"></a> <span class="n">note</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentDispositionHeader</span><span class="p">,</span> <span class="n">noteHeader</span><span class="p">);</span>
<a name="line-394"></a>
<a name="line-395"></a> <span class="n">postData</span> <span class="o">=</span> <span class="n">QByteArray</span><span class="p">();</span>
<a name="line-396"></a>
<a name="line-397"></a> <span class="n">note</span><span class="p">.</span><span class="n">setBody</span><span class="p">(</span><span class="n">postData</span><span class="p">);</span>
<a name="line-398"></a> <span class="n">multiPart</span><span class="o">-&gt;</span><span class="n">append</span><span class="p">(</span><span class="n">note</span><span class="p">);</span>
<a name="line-399"></a>
<a name="line-400"></a> <span class="c1">// image section</span>
<a name="line-401"></a>
<a name="line-402"></a> <span class="n">QFile</span><span class="o">*</span> <span class="k">const</span> <span class="n">file</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QFile</span><span class="p">(</span><span class="n">imgPath</span><span class="p">);</span>
<a name="line-403"></a>
<a name="line-404"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">file</span><span class="p">)</span>
<a name="line-405"></a> <span class="p">{</span>
<a name="line-406"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-407"></a> <span class="p">}</span>
<a name="line-408"></a>
<a name="line-409"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">file</span><span class="o">-&gt;</span><span class="n">open</span><span class="p">(</span><span class="n">QIODevice</span><span class="o">::</span><span class="n">ReadOnly</span><span class="p">))</span>
<a name="line-410"></a> <span class="p">{</span>
<a name="line-411"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-412"></a> <span class="p">}</span>
<a name="line-413"></a>
<a name="line-414"></a> <span class="n">QHttpPart</span> <span class="n">imagePart</span><span class="p">;</span>
<a name="line-415"></a> <span class="n">QString</span> <span class="n">imagePartHeader</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;form-data; name=</span><span class="se">\&quot;</span><span class="s">image</span><span class="se">\&quot;</span><span class="s">; filename=</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">)</span> <span class="o">+</span>
<a name="line-416"></a> <span class="n">QFileInfo</span><span class="p">(</span><span class="n">imgPath</span><span class="p">).</span><span class="n">fileName</span><span class="p">()</span> <span class="o">+</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;&quot;&#39;</span><span class="p">);</span>
<a name="line-417"></a>
<a name="line-418"></a> <span class="n">imagePart</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentDispositionHeader</span><span class="p">,</span> <span class="n">imagePartHeader</span><span class="p">);</span>
<a name="line-419"></a> <span class="n">imagePart</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;image/jpeg&quot;</span><span class="p">));</span>
<a name="line-420"></a>
<a name="line-421"></a> <span class="n">imagePart</span><span class="p">.</span><span class="n">setBodyDevice</span><span class="p">(</span><span class="n">file</span><span class="p">);</span>
<a name="line-422"></a> <span class="n">multiPart</span><span class="o">-&gt;</span><span class="n">append</span><span class="p">(</span><span class="n">imagePart</span><span class="p">);</span>
<a name="line-423"></a>
<a name="line-424"></a> <span class="n">QString</span> <span class="n">content</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;multipart/form-data;boundary=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">multiPart</span><span class="o">-&gt;</span><span class="n">boundary</span><span class="p">());</span>
<a name="line-425"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
<a name="line-426"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">content</span><span class="p">);</span>
<a name="line-427"></a>
<a name="line-428"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">multiPart</span><span class="p">);</span>
<a name="line-429"></a>
<a name="line-430"></a> <span class="c1">// delete the multiPart and file with the reply</span>
<a name="line-431"></a>
<a name="line-432"></a> <span class="n">multiPart</span><span class="o">-&gt;</span><span class="n">setParent</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">);</span>
<a name="line-433"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">P_ADDPIN</span><span class="p">;</span>
<a name="line-434"></a>
<a name="line-435"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-436"></a><span class="p">}</span>
<a name="line-437"></a>
<a name="line-438"></a><span class="kt">void</span> <span class="n">PTalker</span><span class="o">::</span><span class="n">slotFinished</span><span class="p">(</span><span class="n">QNetworkReply</span><span class="o">*</span> <span class="n">reply</span><span class="p">)</span>
<a name="line-439"></a><span class="p">{</span>
<a name="line-440"></a> <span class="k">if</span> <span class="p">(</span><span class="n">reply</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
<a name="line-441"></a> <span class="p">{</span>
<a name="line-442"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-443"></a> <span class="p">}</span>
<a name="line-444"></a>
<a name="line-445"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-446"></a>
<a name="line-447"></a> <span class="k">if</span> <span class="p">(</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">error</span><span class="p">()</span> <span class="o">!=</span> <span class="n">QNetworkReply</span><span class="o">::</span><span class="n">NoError</span><span class="p">)</span>
<a name="line-448"></a> <span class="p">{</span>
<a name="line-449"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">!=</span> <span class="n">Private</span><span class="o">::</span><span class="n">P_CREATEBOARD</span><span class="p">)</span>
<a name="line-450"></a> <span class="p">{</span>
<a name="line-451"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-452"></a> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">critical</span><span class="p">(</span><span class="n">QApplication</span><span class="o">::</span><span class="n">activeWindow</span><span class="p">(),</span>
<a name="line-453"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Error&quot;</span><span class="p">),</span> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">errorString</span><span class="p">());</span>
<a name="line-454"></a><span class="cm">/*</span>
<a name="line-455"></a><span class="cm"> qCDebug(DIGIKAM_WEBSERVICES_LOG) &lt;&lt; &quot;Error content: &quot; &lt;&lt; QString(reply-&gt;readAll());</span>
<a name="line-456"></a><span class="cm">*/</span>
<a name="line-457"></a> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">deleteLater</span><span class="p">();</span>
<a name="line-458"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-459"></a> <span class="p">}</span>
<a name="line-460"></a> <span class="p">}</span>
<a name="line-461"></a>
<a name="line-462"></a> <span class="n">QByteArray</span> <span class="n">buffer</span> <span class="o">=</span> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">readAll</span><span class="p">();</span>
<a name="line-463"></a><span class="cm">/*</span>
<a name="line-464"></a><span class="cm"> qCDebug(DIGIKAM_WEBSERVICES_LOG) &lt;&lt; &quot;BUFFER&quot; &lt;&lt; QString(buffer);</span>
<a name="line-465"></a><span class="cm">*/</span>
<a name="line-466"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span><span class="p">)</span>
<a name="line-467"></a> <span class="p">{</span>
<a name="line-468"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">P_LISTBOARDS</span><span class="p">:</span>
<a name="line-469"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;In P_LISTBOARDS&quot;</span><span class="p">;</span>
<a name="line-470"></a> <span class="n">parseResponseListBoards</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
<a name="line-471"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-472"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">P_CREATEBOARD</span><span class="p">:</span>
<a name="line-473"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;In P_CREATEBOARD&quot;</span><span class="p">;</span>
<a name="line-474"></a> <span class="n">parseResponseCreateBoard</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
<a name="line-475"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-476"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">P_ADDPIN</span><span class="p">:</span>
<a name="line-477"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;In P_ADDPIN&quot;</span><span class="p">;</span>
<a name="line-478"></a> <span class="n">parseResponseAddPin</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
<a name="line-479"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-480"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">P_USERNAME</span><span class="p">:</span>
<a name="line-481"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;In P_USERNAME&quot;</span><span class="p">;</span>
<a name="line-482"></a> <span class="n">parseResponseUserName</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
<a name="line-483"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-484"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">P_ACCESSTOKEN</span><span class="p">:</span>
<a name="line-485"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;In P_ACCESSTOKEN&quot;</span><span class="p">;</span>
<a name="line-486"></a> <span class="n">parseResponseAccessToken</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
<a name="line-487"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-488"></a> <span class="k">default</span><span class="o">:</span>
<a name="line-489"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-490"></a> <span class="p">}</span>
<a name="line-491"></a>
<a name="line-492"></a> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">deleteLater</span><span class="p">();</span>
<a name="line-493"></a><span class="p">}</span>
<a name="line-494"></a>
<a name="line-495"></a><span class="kt">void</span> <span class="n">PTalker</span><span class="o">::</span><span class="n">parseResponseAccessToken</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
<a name="line-496"></a><span class="p">{</span>
<a name="line-497"></a> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
<a name="line-498"></a> <span class="n">QJsonObject</span> <span class="n">jsonObject</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">object</span><span class="p">();</span>
<a name="line-499"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span> <span class="o">=</span> <span class="n">jsonObject</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;access_token&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">();</span>
<a name="line-500"></a>
<a name="line-501"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-502"></a> <span class="p">{</span>
<a name="line-503"></a> <span class="n">qDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Access token Received: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span><span class="p">;</span>
<a name="line-504"></a> <span class="n">emit</span> <span class="nf">pinterestLinkingSucceeded</span><span class="p">();</span>
<a name="line-505"></a> <span class="p">}</span>
<a name="line-506"></a> <span class="k">else</span>
<a name="line-507"></a> <span class="p">{</span>
<a name="line-508"></a> <span class="n">emit</span> <span class="n">pinterestLinkingFailed</span><span class="p">();</span>
<a name="line-509"></a> <span class="p">}</span>
<a name="line-510"></a>
<a name="line-511"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-512"></a><span class="p">}</span>
<a name="line-513"></a>
<a name="line-514"></a><span class="kt">void</span> <span class="n">PTalker</span><span class="o">::</span><span class="n">parseResponseAddPin</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
<a name="line-515"></a><span class="p">{</span>
<a name="line-516"></a> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
<a name="line-517"></a> <span class="n">QJsonObject</span> <span class="n">jsonObject</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">object</span><span class="p">()[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;data&quot;</span><span class="p">)].</span><span class="n">toObject</span><span class="p">();</span>
<a name="line-518"></a> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="n">jsonObject</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;id&quot;</span><span class="p">));</span>
<a name="line-519"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-520"></a>
<a name="line-521"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">success</span><span class="p">)</span>
<a name="line-522"></a> <span class="p">{</span>
<a name="line-523"></a> <span class="n">emit</span> <span class="n">signalAddPinFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to upload Pin&quot;</span><span class="p">));</span>
<a name="line-524"></a> <span class="p">}</span>
<a name="line-525"></a> <span class="k">else</span>
<a name="line-526"></a> <span class="p">{</span>
<a name="line-527"></a> <span class="n">emit</span> <span class="n">signalAddPinSucceeded</span><span class="p">();</span>
<a name="line-528"></a> <span class="p">}</span>
<a name="line-529"></a><span class="p">}</span>
<a name="line-530"></a>
<a name="line-531"></a><span class="kt">void</span> <span class="n">PTalker</span><span class="o">::</span><span class="n">parseResponseUserName</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
<a name="line-532"></a><span class="p">{</span>
<a name="line-533"></a> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
<a name="line-534"></a> <span class="n">QJsonObject</span> <span class="n">jsonObject</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">object</span><span class="p">()[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;data&quot;</span><span class="p">)].</span><span class="n">toObject</span><span class="p">();</span>
<a name="line-535"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">userName</span> <span class="o">=</span> <span class="n">jsonObject</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;username&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">();</span>
<a name="line-536"></a>
<a name="line-537"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-538"></a> <span class="n">emit</span> <span class="nf">signalSetUserName</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">userName</span><span class="p">);</span>
<a name="line-539"></a><span class="p">}</span>
<a name="line-540"></a>
<a name="line-541"></a><span class="kt">void</span> <span class="n">PTalker</span><span class="o">::</span><span class="n">parseResponseListBoards</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
<a name="line-542"></a><span class="p">{</span>
<a name="line-543"></a> <span class="n">QJsonParseError</span> <span class="n">err</span><span class="p">;</span>
<a name="line-544"></a> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">err</span><span class="p">);</span>
<a name="line-545"></a>
<a name="line-546"></a> <span class="k">if</span> <span class="p">(</span><span class="n">err</span><span class="p">.</span><span class="n">error</span> <span class="o">!=</span> <span class="n">QJsonParseError</span><span class="o">::</span><span class="n">NoError</span><span class="p">)</span>
<a name="line-547"></a> <span class="p">{</span>
<a name="line-548"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-549"></a> <span class="n">emit</span> <span class="nf">signalListBoardsFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to list boards&quot;</span><span class="p">));</span>
<a name="line-550"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-551"></a> <span class="p">}</span>
<a name="line-552"></a>
<a name="line-553"></a> <span class="n">QJsonObject</span> <span class="n">jsonObject</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">object</span><span class="p">();</span>
<a name="line-554"></a><span class="cm">/*</span>
<a name="line-555"></a><span class="cm"> qCDebug(DIGIKAM_WEBSERVICES_LOG) &lt;&lt; &quot;Json Listing Boards : &quot; &lt;&lt; doc;</span>
<a name="line-556"></a><span class="cm">*/</span>
<a name="line-557"></a> <span class="n">QJsonArray</span> <span class="n">jsonArray</span> <span class="o">=</span> <span class="n">jsonObject</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;data&quot;</span><span class="p">)].</span><span class="n">toArray</span><span class="p">();</span>
<a name="line-558"></a>
<a name="line-559"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">list</span><span class="p">;</span>
<a name="line-560"></a><span class="hll"> <span class="n">QString</span> <span class="n">boardID</span><span class="p">;</span><span class='error2'>&lt;--- Shadowed declaration</span>
</span><a name="line-561"></a><span class="hll"> <span class="n">QString</span> <span class="n">boardName</span><span class="p">;</span><span class='error2'>&lt;--- Shadowed declaration</span>
</span><a name="line-562"></a>
<a name="line-563"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">QJsonValue</span><span class="o">&amp;</span> <span class="n">value</span><span class="p">,</span> <span class="n">jsonArray</span><span class="p">)</span>
<a name="line-564"></a> <span class="p">{</span>
<a name="line-565"></a><span class="hll"> <span class="n">QString</span> <span class="n">boardID</span><span class="p">;</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-566"></a><span class="hll"> <span class="n">QString</span> <span class="n">boardName</span><span class="p">;</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-567"></a> <span class="n">QJsonObject</span> <span class="n">obj</span> <span class="o">=</span> <span class="n">value</span><span class="p">.</span><span class="n">toObject</span><span class="p">();</span>
<a name="line-568"></a> <span class="n">boardID</span> <span class="o">=</span> <span class="n">obj</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;id&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">();</span>
<a name="line-569"></a> <span class="n">boardName</span> <span class="o">=</span> <span class="n">obj</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;name&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">();</span>
<a name="line-570"></a>
<a name="line-571"></a> <span class="n">list</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">qMakePair</span><span class="p">(</span><span class="n">boardID</span><span class="p">,</span> <span class="n">boardName</span><span class="p">));</span>
<a name="line-572"></a> <span class="p">}</span>
<a name="line-573"></a>
<a name="line-574"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-575"></a> <span class="n">emit</span> <span class="nf">signalListBoardsDone</span><span class="p">(</span><span class="n">list</span><span class="p">);</span>
<a name="line-576"></a><span class="p">}</span>
<a name="line-577"></a>
<a name="line-578"></a><span class="kt">void</span> <span class="n">PTalker</span><span class="o">::</span><span class="n">parseResponseCreateBoard</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
<a name="line-579"></a><span class="p">{</span>
<a name="line-580"></a><span class="hll"> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">);</span><span class='error2'>&lt;--- Shadowed declaration</span>
</span><a name="line-581"></a> <span class="n">QJsonObject</span> <span class="n">jsonObject</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">object</span><span class="p">();</span>
<a name="line-582"></a> <span class="kt">bool</span> <span class="n">fail</span> <span class="o">=</span> <span class="n">jsonObject</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;error&quot;</span><span class="p">));</span>
<a name="line-583"></a>
<a name="line-584"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-585"></a>
<a name="line-586"></a> <span class="k">if</span> <span class="p">(</span><span class="n">fail</span><span class="p">)</span>
<a name="line-587"></a> <span class="p">{</span>
<a name="line-588"></a> <span class="n">QJsonParseError</span> <span class="n">err</span><span class="p">;</span>
<a name="line-589"></a><span class="hll"> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">err</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-590"></a> <span class="n">emit</span> <span class="nf">signalCreateBoardFailed</span><span class="p">(</span><span class="n">jsonObject</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;error_summary&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">());</span>
<a name="line-591"></a> <span class="p">}</span>
<a name="line-592"></a> <span class="k">else</span>
<a name="line-593"></a> <span class="p">{</span>
<a name="line-594"></a> <span class="n">emit</span> <span class="n">signalCreateBoardSucceeded</span><span class="p">();</span>
<a name="line-595"></a> <span class="p">}</span>
<a name="line-596"></a><span class="p">}</span>
<a name="line-597"></a>
<a name="line-598"></a><span class="kt">void</span> <span class="n">PTalker</span><span class="o">::</span><span class="n">writeSettings</span><span class="p">()</span>
<a name="line-599"></a><span class="p">{</span>
<a name="line-600"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">beginGroup</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceName</span><span class="p">);</span>
<a name="line-601"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">setValue</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceKey</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span><span class="p">);</span>
<a name="line-602"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">endGroup</span><span class="p">();</span>
<a name="line-603"></a><span class="p">}</span>
<a name="line-604"></a>
<a name="line-605"></a><span class="kt">void</span> <span class="n">PTalker</span><span class="o">::</span><span class="n">readSettings</span><span class="p">()</span>
<a name="line-606"></a><span class="p">{</span>
<a name="line-607"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">beginGroup</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceName</span><span class="p">);</span>
<a name="line-608"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">value</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceKey</span><span class="p">).</span><span class="n">toString</span><span class="p">();</span>
<a name="line-609"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">endGroup</span><span class="p">();</span>
<a name="line-610"></a>
<a name="line-611"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">accessToken</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-612"></a> <span class="p">{</span>
<a name="line-613"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Linking...&quot;</span><span class="p">;</span>
<a name="line-614"></a> <span class="n">link</span><span class="p">();</span>
<a name="line-615"></a> <span class="p">}</span>
<a name="line-616"></a> <span class="k">else</span>
<a name="line-617"></a> <span class="p">{</span>
<a name="line-618"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Already Linked&quot;</span><span class="p">;</span>
<a name="line-619"></a> <span class="n">emit</span> <span class="nf">pinterestLinkingSucceeded</span><span class="p">();</span>
<a name="line-620"></a> <span class="p">}</span>
<a name="line-621"></a><span class="p">}</span>
<a name="line-622"></a>
<a name="line-623"></a><span class="p">}</span> <span class="c1">// namespace DigikamGenericPinterestPlugin</span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/12.html b/static/reports/cppcheck/master/12.html
index 28727da2f..2988e93b0 100644
--- a/static/reports/cppcheck/master/12.html
+++ b/static/reports/cppcheck/master/12.html
@@ -1,2137 +1,2501 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/dplugins/generic/webservices/piwigo/piwigotalker.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/dplugins/generic/webservices/yandexfotki/yftalker.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> piwigotalker.cpp</p>
-<a href='12.html#line-639'> shadowVar 639</a><a href='12.html#line-651'> shadowVar 651</a>
+ <p id="filename"><a href="index.html">Defects:</a> yftalker.cpp</p>
+<a href='12.html#line-826'> shadowVar 826</a><a href='12.html#line-857'> shadowVar 857</a>
</div>
<div id="content">
-<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
-100
-101
-102
-103
-104
-105
-106
-107
-108
-109
-110
-111
-112
-113
-114
-115
-116
-117
-118
-119
-120
-121
-122
-123
-124
-125
-126
-127
-128
-129
-130
-131
-132
-133
-134
-135
-136
-137
-138
-139
-140
-141
-142
-143
-144
-145
-146
-147
-148
-149
-150
-151
-152
-153
-154
-155
-156
-157
-158
-159
-160
-161
-162
-163
-164
-165
-166
-167
-168
-169
-170
-171
-172
-173
-174
-175
-176
-177
-178
-179
-180
-181
-182
-183
-184
-185
-186
-187
-188
-189
-190
-191
-192
-193
-194
-195
-196
-197
-198
-199
-200
-201
-202
-203
-204
-205
-206
-207
-208
-209
-210
-211
-212
-213
-214
-215
-216
-217
-218
-219
-220
-221
-222
-223
-224
-225
-226
-227
-228
-229
-230
-231
-232
-233
-234
-235
-236
-237
-238
-239
-240
-241
-242
-243
-244
-245
-246
-247
-248
-249
-250
-251
-252
-253
-254
-255
-256
-257
-258
-259
-260
-261
-262
-263
-264
-265
-266
-267
-268
-269
-270
-271
-272
-273
-274
-275
-276
-277
-278
-279
-280
-281
-282
-283
-284
-285
-286
-287
-288
-289
-290
-291
-292
-293
-294
-295
-296
-297
-298
-299
-300
-301
-302
-303
-304
-305
-306
-307
-308
-309
-310
-311
-312
-313
-314
-315
-316
-317
-318
-319
-320
-321
-322
-323
-324
-325
-326
-327
-328
-329
-330
-331
-332
-333
-334
-335
-336
-337
-338
-339
-340
-341
-342
-343
-344
-345
-346
-347
-348
-349
-350
-351
-352
-353
-354
-355
-356
-357
-358
-359
-360
-361
-362
-363
-364
-365
-366
-367
-368
-369
-370
-371
-372
-373
-374
-375
-376
-377
-378
-379
-380
-381
-382
-383
-384
-385
-386
-387
-388
-389
-390
-391
-392
-393
-394
-395
-396
-397
-398
-399
-400
-401
-402
-403
-404
-405
-406
-407
-408
-409
-410
-411
-412
-413
-414
-415
-416
-417
-418
-419
-420
-421
-422
-423
-424
-425
-426
-427
-428
-429
-430
-431
-432
-433
-434
-435
-436
-437
-438
-439
-440
-441
-442
-443
-444
-445
-446
-447
-448
-449
-450
-451
-452
-453
-454
-455
-456
-457
-458
-459
-460
-461
-462
-463
-464
-465
-466
-467
-468
-469
-470
-471
-472
-473
-474
-475
-476
-477
-478
-479
-480
-481
-482
-483
-484
-485
-486
-487
-488
-489
-490
-491
-492
-493
-494
-495
-496
-497
-498
-499
-500
-501
-502
-503
-504
-505
-506
-507
-508
-509
-510
-511
-512
-513
-514
-515
-516
-517
-518
-519
-520
-521
-522
-523
-524
-525
-526
-527
-528
-529
-530
-531
-532
-533
-534
-535
-536
-537
-538
-539
-540
-541
-542
-543
-544
-545
-546
-547
-548
-549
-550
-551
-552
-553
-554
-555
-556
-557
-558
-559
-560
-561
-562
-563
-564
-565
-566
-567
-568
-569
-570
-571
-572
-573
-574
-575
-576
-577
-578
-579
-580
-581
-582
-583
-584
-585
-586
-587
-588
-589
-590
-591
-592
-593
-594
-595
-596
-597
-598
-599
-600
-601
-602
-603
-604
-605
-606
-607
-608
-609
-610
-611
-612
-613
-614
-615
-616
-617
-618
-619
-620
-621
-622
-623
-624
-625
-626
-627
-628
-629
-630
-631
-632
-633
-634
-635
-636
-637
-638
-639
-640
-641
-642
-643
-644
-645
-646
-647
-648
-649
-650
-651
-652
-653
-654
-655
-656
-657
-658
-659
-660
-661
-662
-663
-664
-665
-666
-667
-668
-669
-670
-671
-672
-673
-674
-675
-676
-677
-678
-679
-680
-681
-682
-683
-684
-685
-686
-687
-688
-689
-690
-691
-692
-693
-694
-695
-696
-697
-698
-699
-700
-701
-702
-703
-704
-705
-706
-707
-708
-709
-710
-711
-712
-713
-714
-715
-716
-717
-718
-719
-720
-721
-722
-723
-724
-725
-726
-727
-728
-729
-730
-731
-732
-733
-734
-735
-736
-737
-738
-739
-740
-741
-742
-743
-744
-745
-746
-747
-748
-749
-750
-751
-752
-753
-754
-755
-756
-757
-758
-759
-760
-761
-762
-763
-764
-765
-766
-767
-768
-769
-770
-771
-772
-773
-774
-775
-776
-777
-778
-779
-780
-781
-782
-783
-784
-785
-786
-787
-788
-789
-790
-791
-792
-793
-794
-795
-796
-797
-798
-799
-800
-801
-802
-803
-804
-805
-806
-807
-808
-809
-810
-811
-812
-813
-814
-815
-816
-817
-818
-819
-820
-821
-822
-823
-824
-825
-826
-827
-828
-829
-830
-831
-832
-833
-834
-835
-836
-837
-838
-839
-840
-841
-842
-843
-844
-845
-846
-847
-848
-849
-850
-851
-852
-853
-854
-855
-856
-857
-858
-859
-860
-861
-862
-863
-864
-865
-866
-867
-868
-869
-870
-871
-872
-873
-874
-875
-876
-877
-878
-879
-880
-881
-882
-883
-884
-885
-886
-887
-888
-889
-890
-891
-892
-893
-894
-895
-896
-897
-898
-899
-900
-901
-902
-903
-904
-905
-906
-907
-908
-909
-910
-911
-912
-913
-914
-915
-916
-917
-918
-919
-920
-921
-922
-923
-924
-925
-926
-927
-928
-929
-930
-931
-932
-933
-934
-935
-936
-937
-938
-939
-940
-941
-942
-943
-944
-945
-946
-947
-948
-949
-950
-951
-952
-953
-954
-955
-956
-957
-958
-959
-960
-961
-962
-963
-964
-965
-966
-967
-968
-969
-970
-971
-972
-973
-974
-975
-976
-977
-978
-979
-980
-981
-982
-983
-984
-985
-986
-987
-988
-989
-990
-991
-992
-993
-994
-995
-996</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
+<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+ 100
+ 101
+ 102
+ 103
+ 104
+ 105
+ 106
+ 107
+ 108
+ 109
+ 110
+ 111
+ 112
+ 113
+ 114
+ 115
+ 116
+ 117
+ 118
+ 119
+ 120
+ 121
+ 122
+ 123
+ 124
+ 125
+ 126
+ 127
+ 128
+ 129
+ 130
+ 131
+ 132
+ 133
+ 134
+ 135
+ 136
+ 137
+ 138
+ 139
+ 140
+ 141
+ 142
+ 143
+ 144
+ 145
+ 146
+ 147
+ 148
+ 149
+ 150
+ 151
+ 152
+ 153
+ 154
+ 155
+ 156
+ 157
+ 158
+ 159
+ 160
+ 161
+ 162
+ 163
+ 164
+ 165
+ 166
+ 167
+ 168
+ 169
+ 170
+ 171
+ 172
+ 173
+ 174
+ 175
+ 176
+ 177
+ 178
+ 179
+ 180
+ 181
+ 182
+ 183
+ 184
+ 185
+ 186
+ 187
+ 188
+ 189
+ 190
+ 191
+ 192
+ 193
+ 194
+ 195
+ 196
+ 197
+ 198
+ 199
+ 200
+ 201
+ 202
+ 203
+ 204
+ 205
+ 206
+ 207
+ 208
+ 209
+ 210
+ 211
+ 212
+ 213
+ 214
+ 215
+ 216
+ 217
+ 218
+ 219
+ 220
+ 221
+ 222
+ 223
+ 224
+ 225
+ 226
+ 227
+ 228
+ 229
+ 230
+ 231
+ 232
+ 233
+ 234
+ 235
+ 236
+ 237
+ 238
+ 239
+ 240
+ 241
+ 242
+ 243
+ 244
+ 245
+ 246
+ 247
+ 248
+ 249
+ 250
+ 251
+ 252
+ 253
+ 254
+ 255
+ 256
+ 257
+ 258
+ 259
+ 260
+ 261
+ 262
+ 263
+ 264
+ 265
+ 266
+ 267
+ 268
+ 269
+ 270
+ 271
+ 272
+ 273
+ 274
+ 275
+ 276
+ 277
+ 278
+ 279
+ 280
+ 281
+ 282
+ 283
+ 284
+ 285
+ 286
+ 287
+ 288
+ 289
+ 290
+ 291
+ 292
+ 293
+ 294
+ 295
+ 296
+ 297
+ 298
+ 299
+ 300
+ 301
+ 302
+ 303
+ 304
+ 305
+ 306
+ 307
+ 308
+ 309
+ 310
+ 311
+ 312
+ 313
+ 314
+ 315
+ 316
+ 317
+ 318
+ 319
+ 320
+ 321
+ 322
+ 323
+ 324
+ 325
+ 326
+ 327
+ 328
+ 329
+ 330
+ 331
+ 332
+ 333
+ 334
+ 335
+ 336
+ 337
+ 338
+ 339
+ 340
+ 341
+ 342
+ 343
+ 344
+ 345
+ 346
+ 347
+ 348
+ 349
+ 350
+ 351
+ 352
+ 353
+ 354
+ 355
+ 356
+ 357
+ 358
+ 359
+ 360
+ 361
+ 362
+ 363
+ 364
+ 365
+ 366
+ 367
+ 368
+ 369
+ 370
+ 371
+ 372
+ 373
+ 374
+ 375
+ 376
+ 377
+ 378
+ 379
+ 380
+ 381
+ 382
+ 383
+ 384
+ 385
+ 386
+ 387
+ 388
+ 389
+ 390
+ 391
+ 392
+ 393
+ 394
+ 395
+ 396
+ 397
+ 398
+ 399
+ 400
+ 401
+ 402
+ 403
+ 404
+ 405
+ 406
+ 407
+ 408
+ 409
+ 410
+ 411
+ 412
+ 413
+ 414
+ 415
+ 416
+ 417
+ 418
+ 419
+ 420
+ 421
+ 422
+ 423
+ 424
+ 425
+ 426
+ 427
+ 428
+ 429
+ 430
+ 431
+ 432
+ 433
+ 434
+ 435
+ 436
+ 437
+ 438
+ 439
+ 440
+ 441
+ 442
+ 443
+ 444
+ 445
+ 446
+ 447
+ 448
+ 449
+ 450
+ 451
+ 452
+ 453
+ 454
+ 455
+ 456
+ 457
+ 458
+ 459
+ 460
+ 461
+ 462
+ 463
+ 464
+ 465
+ 466
+ 467
+ 468
+ 469
+ 470
+ 471
+ 472
+ 473
+ 474
+ 475
+ 476
+ 477
+ 478
+ 479
+ 480
+ 481
+ 482
+ 483
+ 484
+ 485
+ 486
+ 487
+ 488
+ 489
+ 490
+ 491
+ 492
+ 493
+ 494
+ 495
+ 496
+ 497
+ 498
+ 499
+ 500
+ 501
+ 502
+ 503
+ 504
+ 505
+ 506
+ 507
+ 508
+ 509
+ 510
+ 511
+ 512
+ 513
+ 514
+ 515
+ 516
+ 517
+ 518
+ 519
+ 520
+ 521
+ 522
+ 523
+ 524
+ 525
+ 526
+ 527
+ 528
+ 529
+ 530
+ 531
+ 532
+ 533
+ 534
+ 535
+ 536
+ 537
+ 538
+ 539
+ 540
+ 541
+ 542
+ 543
+ 544
+ 545
+ 546
+ 547
+ 548
+ 549
+ 550
+ 551
+ 552
+ 553
+ 554
+ 555
+ 556
+ 557
+ 558
+ 559
+ 560
+ 561
+ 562
+ 563
+ 564
+ 565
+ 566
+ 567
+ 568
+ 569
+ 570
+ 571
+ 572
+ 573
+ 574
+ 575
+ 576
+ 577
+ 578
+ 579
+ 580
+ 581
+ 582
+ 583
+ 584
+ 585
+ 586
+ 587
+ 588
+ 589
+ 590
+ 591
+ 592
+ 593
+ 594
+ 595
+ 596
+ 597
+ 598
+ 599
+ 600
+ 601
+ 602
+ 603
+ 604
+ 605
+ 606
+ 607
+ 608
+ 609
+ 610
+ 611
+ 612
+ 613
+ 614
+ 615
+ 616
+ 617
+ 618
+ 619
+ 620
+ 621
+ 622
+ 623
+ 624
+ 625
+ 626
+ 627
+ 628
+ 629
+ 630
+ 631
+ 632
+ 633
+ 634
+ 635
+ 636
+ 637
+ 638
+ 639
+ 640
+ 641
+ 642
+ 643
+ 644
+ 645
+ 646
+ 647
+ 648
+ 649
+ 650
+ 651
+ 652
+ 653
+ 654
+ 655
+ 656
+ 657
+ 658
+ 659
+ 660
+ 661
+ 662
+ 663
+ 664
+ 665
+ 666
+ 667
+ 668
+ 669
+ 670
+ 671
+ 672
+ 673
+ 674
+ 675
+ 676
+ 677
+ 678
+ 679
+ 680
+ 681
+ 682
+ 683
+ 684
+ 685
+ 686
+ 687
+ 688
+ 689
+ 690
+ 691
+ 692
+ 693
+ 694
+ 695
+ 696
+ 697
+ 698
+ 699
+ 700
+ 701
+ 702
+ 703
+ 704
+ 705
+ 706
+ 707
+ 708
+ 709
+ 710
+ 711
+ 712
+ 713
+ 714
+ 715
+ 716
+ 717
+ 718
+ 719
+ 720
+ 721
+ 722
+ 723
+ 724
+ 725
+ 726
+ 727
+ 728
+ 729
+ 730
+ 731
+ 732
+ 733
+ 734
+ 735
+ 736
+ 737
+ 738
+ 739
+ 740
+ 741
+ 742
+ 743
+ 744
+ 745
+ 746
+ 747
+ 748
+ 749
+ 750
+ 751
+ 752
+ 753
+ 754
+ 755
+ 756
+ 757
+ 758
+ 759
+ 760
+ 761
+ 762
+ 763
+ 764
+ 765
+ 766
+ 767
+ 768
+ 769
+ 770
+ 771
+ 772
+ 773
+ 774
+ 775
+ 776
+ 777
+ 778
+ 779
+ 780
+ 781
+ 782
+ 783
+ 784
+ 785
+ 786
+ 787
+ 788
+ 789
+ 790
+ 791
+ 792
+ 793
+ 794
+ 795
+ 796
+ 797
+ 798
+ 799
+ 800
+ 801
+ 802
+ 803
+ 804
+ 805
+ 806
+ 807
+ 808
+ 809
+ 810
+ 811
+ 812
+ 813
+ 814
+ 815
+ 816
+ 817
+ 818
+ 819
+ 820
+ 821
+ 822
+ 823
+ 824
+ 825
+ 826
+ 827
+ 828
+ 829
+ 830
+ 831
+ 832
+ 833
+ 834
+ 835
+ 836
+ 837
+ 838
+ 839
+ 840
+ 841
+ 842
+ 843
+ 844
+ 845
+ 846
+ 847
+ 848
+ 849
+ 850
+ 851
+ 852
+ 853
+ 854
+ 855
+ 856
+ 857
+ 858
+ 859
+ 860
+ 861
+ 862
+ 863
+ 864
+ 865
+ 866
+ 867
+ 868
+ 869
+ 870
+ 871
+ 872
+ 873
+ 874
+ 875
+ 876
+ 877
+ 878
+ 879
+ 880
+ 881
+ 882
+ 883
+ 884
+ 885
+ 886
+ 887
+ 888
+ 889
+ 890
+ 891
+ 892
+ 893
+ 894
+ 895
+ 896
+ 897
+ 898
+ 899
+ 900
+ 901
+ 902
+ 903
+ 904
+ 905
+ 906
+ 907
+ 908
+ 909
+ 910
+ 911
+ 912
+ 913
+ 914
+ 915
+ 916
+ 917
+ 918
+ 919
+ 920
+ 921
+ 922
+ 923
+ 924
+ 925
+ 926
+ 927
+ 928
+ 929
+ 930
+ 931
+ 932
+ 933
+ 934
+ 935
+ 936
+ 937
+ 938
+ 939
+ 940
+ 941
+ 942
+ 943
+ 944
+ 945
+ 946
+ 947
+ 948
+ 949
+ 950
+ 951
+ 952
+ 953
+ 954
+ 955
+ 956
+ 957
+ 958
+ 959
+ 960
+ 961
+ 962
+ 963
+ 964
+ 965
+ 966
+ 967
+ 968
+ 969
+ 970
+ 971
+ 972
+ 973
+ 974
+ 975
+ 976
+ 977
+ 978
+ 979
+ 980
+ 981
+ 982
+ 983
+ 984
+ 985
+ 986
+ 987
+ 988
+ 989
+ 990
+ 991
+ 992
+ 993
+ 994
+ 995
+ 996
+ 997
+ 998
+ 999
+1000
+1001
+1002
+1003
+1004
+1005
+1006
+1007
+1008
+1009
+1010
+1011
+1012
+1013
+1014
+1015
+1016
+1017
+1018
+1019
+1020
+1021
+1022
+1023
+1024
+1025
+1026
+1027
+1028
+1029
+1030
+1031
+1032
+1033
+1034
+1035
+1036
+1037
+1038
+1039
+1040
+1041
+1042
+1043
+1044
+1045
+1046
+1047
+1048
+1049
+1050
+1051
+1052
+1053
+1054
+1055
+1056
+1057
+1058
+1059
+1060
+1061
+1062
+1063
+1064
+1065
+1066
+1067
+1068
+1069
+1070
+1071
+1072
+1073
+1074
+1075
+1076
+1077
+1078
+1079
+1080
+1081
+1082
+1083
+1084
+1085
+1086
+1087
+1088
+1089
+1090
+1091
+1092
+1093
+1094
+1095
+1096
+1097
+1098
+1099
+1100
+1101
+1102
+1103
+1104
+1105
+1106
+1107
+1108
+1109
+1110
+1111
+1112
+1113
+1114
+1115
+1116
+1117
+1118
+1119
+1120
+1121
+1122
+1123
+1124
+1125
+1126
+1127
+1128
+1129
+1130
+1131
+1132
+1133
+1134
+1135
+1136
+1137
+1138
+1139
+1140
+1141
+1142
+1143
+1144
+1145
+1146
+1147
+1148
+1149
+1150
+1151
+1152
+1153
+1154
+1155
+1156
+1157
+1158
+1159
+1160
+1161
+1162
+1163
+1164
+1165
+1166
+1167
+1168
+1169
+1170
+1171
+1172
+1173
+1174
+1175
+1176
+1177
+1178</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
-<a name="line-6"></a><span class="cm"> * Date : 2014-09-30</span>
-<a name="line-7"></a><span class="cm"> * Description : a tool to export items to Piwigo web service</span>
+<a name="line-6"></a><span class="cm"> * Date : 2010-11-14</span>
+<a name="line-7"></a><span class="cm"> * Description : a tool to export items to YandexFotki web service</span>
<a name="line-8"></a><span class="cm"> *</span>
-<a name="line-9"></a><span class="cm"> * Copyright (C) 2003-2005 by Renchi Raju &lt;renchi dot raju at gmail dot com&gt;</span>
-<a name="line-10"></a><span class="cm"> * Copyright (C) 2006 by Colin Guthrie &lt;kde at colin dot guthr dot ie&gt;</span>
-<a name="line-11"></a><span class="cm"> * Copyright (C) 2006-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&gt;</span>
-<a name="line-12"></a><span class="cm"> * Copyright (C) 2008 by Andrea Diamantini &lt;adjam7 at gmail dot com&gt;</span>
-<a name="line-13"></a><span class="cm"> * Copyright (C) 2010-2019 by Frederic Coiffier &lt;frederic dot coiffier at free dot com&gt;</span>
-<a name="line-14"></a><span class="cm"> *</span>
-<a name="line-15"></a><span class="cm"> * This program is free software; you can redistribute it</span>
-<a name="line-16"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
-<a name="line-17"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
-<a name="line-18"></a><span class="cm"> * either version 2, or (at your option) any later version.</span>
-<a name="line-19"></a><span class="cm"> *</span>
-<a name="line-20"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
-<a name="line-21"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
-<a name="line-22"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
-<a name="line-23"></a><span class="cm"> * GNU General Public License for more details.</span>
-<a name="line-24"></a><span class="cm"> *</span>
-<a name="line-25"></a><span class="cm"> * ============================================================ */</span>
-<a name="line-26"></a>
-<a name="line-27"></a><span class="cp">#include</span> <span class="cpf">&quot;piwigotalker.h&quot;</span><span class="cp"></span>
-<a name="line-28"></a>
-<a name="line-29"></a><span class="c1">// Qt includes</span>
-<a name="line-30"></a>
-<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QByteArray&gt;</span><span class="cp"></span>
-<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QImage&gt;</span><span class="cp"></span>
-<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QRegExp&gt;</span><span class="cp"></span>
-<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QXmlStreamReader&gt;</span><span class="cp"></span>
-<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QFileInfo&gt;</span><span class="cp"></span>
-<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QMessageBox&gt;</span><span class="cp"></span>
-<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&lt;QApplication&gt;</span><span class="cp"></span>
-<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&lt;QCryptographicHash&gt;</span><span class="cp"></span>
-<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&lt;QUuid&gt;</span><span class="cp"></span>
-<a name="line-40"></a>
-<a name="line-41"></a><span class="c1">// KDE includes</span>
-<a name="line-42"></a>
-<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
+<a name="line-9"></a><span class="cm"> * Copyright (C) 2010 by Roman Tsisyk &lt;roman at tsisyk dot com&gt;</span>
+<a name="line-10"></a><span class="cm"> * Copyright (C) 2010-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&gt;</span>
+<a name="line-11"></a><span class="cm"> *</span>
+<a name="line-12"></a><span class="cm"> * This program is free software; you can redistribute it</span>
+<a name="line-13"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
+<a name="line-14"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
+<a name="line-15"></a><span class="cm"> * either version 2, or (at your option) any later version.</span>
+<a name="line-16"></a><span class="cm"> *</span>
+<a name="line-17"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
+<a name="line-18"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
+<a name="line-19"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
+<a name="line-20"></a><span class="cm"> * GNU General Public License for more details.</span>
+<a name="line-21"></a><span class="cm"> *</span>
+<a name="line-22"></a><span class="cm"> * ============================================================ */</span>
+<a name="line-23"></a>
+<a name="line-24"></a><span class="cp">#include</span> <span class="cpf">&quot;yftalker.h&quot;</span><span class="cp"></span>
+<a name="line-25"></a>
+<a name="line-26"></a><span class="c1">// Qt includes</span>
+<a name="line-27"></a>
+<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;QTextDocument&gt;</span><span class="cp"></span>
+<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QByteArray&gt;</span><span class="cp"></span>
+<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QDomDocument&gt;</span><span class="cp"></span>
+<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QDomNode&gt;</span><span class="cp"></span>
+<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QFile&gt;</span><span class="cp"></span>
+<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QFileInfo&gt;</span><span class="cp"></span>
+<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QPointer&gt;</span><span class="cp"></span>
+<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QNetworkReply&gt;</span><span class="cp"></span>
+<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QNetworkAccessManager&gt;</span><span class="cp"></span>
+<a name="line-37"></a>
+<a name="line-38"></a><span class="c1">// Local includes</span>
+<a name="line-39"></a>
+<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
+<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_version.h&quot;</span><span class="cp"></span>
+<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&quot;yfauth.h&quot;</span><span class="cp"></span>
+<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&quot;yfalbum.h&quot;</span><span class="cp"></span>
<a name="line-44"></a>
-<a name="line-45"></a><span class="c1">// Local includes</span>
-<a name="line-46"></a>
-<a name="line-47"></a><span class="cp">#include</span> <span class="cpf">&quot;dmetadata.h&quot;</span><span class="cp"></span>
-<a name="line-48"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
-<a name="line-49"></a><span class="cp">#include</span> <span class="cpf">&quot;piwigoitem.h&quot;</span><span class="cp"></span>
-<a name="line-50"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_version.h&quot;</span><span class="cp"></span>
-<a name="line-51"></a><span class="cp">#include</span> <span class="cpf">&quot;wstoolutils.h&quot;</span><span class="cp"></span>
-<a name="line-52"></a><span class="cp">#include</span> <span class="cpf">&quot;previewloadthread.h&quot;</span><span class="cp"></span>
-<a name="line-53"></a>
-<a name="line-54"></a><span class="k">namespace</span> <span class="n">DigikamGenericPiwigoPlugin</span>
-<a name="line-55"></a><span class="p">{</span>
-<a name="line-56"></a>
-<a name="line-57"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">PiwigoTalker</span><span class="o">::</span><span class="n">Private</span>
-<a name="line-58"></a><span class="p">{</span>
-<a name="line-59"></a><span class="k">public</span><span class="o">:</span>
-<a name="line-60"></a>
-<a name="line-61"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
-<a name="line-62"></a> <span class="p">{</span>
-<a name="line-63"></a> <span class="n">parent</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-64"></a> <span class="n">state</span> <span class="o">=</span> <span class="n">GE_LOGOUT</span><span class="p">;</span>
-<a name="line-65"></a> <span class="n">netMngr</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-66"></a> <span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-67"></a> <span class="n">loggedIn</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-68"></a> <span class="n">chunkId</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-69"></a> <span class="n">nbOfChunks</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-70"></a> <span class="n">version</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
-<a name="line-71"></a> <span class="n">albumId</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-72"></a> <span class="n">photoId</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-73"></a> <span class="n">iface</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-74"></a> <span class="p">}</span>
+<a name="line-45"></a><span class="k">namespace</span> <span class="n">DigikamGenericYFPlugin</span>
+<a name="line-46"></a><span class="p">{</span>
+<a name="line-47"></a>
+<a name="line-48"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">Private</span>
+<a name="line-49"></a><span class="p">{</span>
+<a name="line-50"></a><span class="k">public</span><span class="o">:</span>
+<a name="line-51"></a>
+<a name="line-52"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
+<a name="line-53"></a> <span class="p">{</span>
+<a name="line-54"></a> <span class="n">state</span> <span class="o">=</span> <span class="n">STATE_UNAUTHENTICATED</span><span class="p">;</span>
+<a name="line-55"></a> <span class="n">lastPhoto</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-56"></a> <span class="n">netMngr</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-57"></a> <span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-58"></a> <span class="p">}</span>
+<a name="line-59"></a>
+<a name="line-60"></a> <span class="c1">// API-related fields</span>
+<a name="line-61"></a> <span class="n">QString</span> <span class="n">sessionKey</span><span class="p">;</span>
+<a name="line-62"></a> <span class="n">QString</span> <span class="n">sessionId</span><span class="p">;</span>
+<a name="line-63"></a> <span class="n">QString</span> <span class="n">token</span><span class="p">;</span>
+<a name="line-64"></a> <span class="n">QString</span> <span class="n">login</span><span class="p">;</span>
+<a name="line-65"></a> <span class="n">QString</span> <span class="n">password</span><span class="p">;</span>
+<a name="line-66"></a> <span class="n">QString</span> <span class="n">apiAlbumsUrl</span><span class="p">;</span>
+<a name="line-67"></a> <span class="n">QString</span> <span class="n">apiPhotosUrl</span><span class="p">;</span>
+<a name="line-68"></a> <span class="n">QString</span> <span class="n">apiTagsUrl</span><span class="p">;</span>
+<a name="line-69"></a>
+<a name="line-70"></a> <span class="c1">// FSM data</span>
+<a name="line-71"></a> <span class="n">State</span> <span class="n">state</span><span class="p">;</span>
+<a name="line-72"></a> <span class="c1">// temporary data</span>
+<a name="line-73"></a> <span class="n">YFPhoto</span><span class="o">*</span> <span class="n">lastPhoto</span><span class="p">;</span>
+<a name="line-74"></a> <span class="n">QString</span> <span class="n">lastPhotosUrl</span><span class="p">;</span>
<a name="line-75"></a>
-<a name="line-76"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="n">parent</span><span class="p">;</span>
-<a name="line-77"></a> <span class="n">State</span> <span class="n">state</span><span class="p">;</span>
-<a name="line-78"></a> <span class="n">QString</span> <span class="n">cookie</span><span class="p">;</span>
-<a name="line-79"></a> <span class="n">QUrl</span> <span class="n">url</span><span class="p">;</span>
-<a name="line-80"></a> <span class="n">QNetworkAccessManager</span><span class="o">*</span> <span class="n">netMngr</span><span class="p">;</span>
-<a name="line-81"></a> <span class="n">QNetworkReply</span><span class="o">*</span> <span class="n">reply</span><span class="p">;</span>
-<a name="line-82"></a> <span class="kt">bool</span> <span class="n">loggedIn</span><span class="p">;</span>
-<a name="line-83"></a> <span class="n">QByteArray</span> <span class="n">talker_buffer</span><span class="p">;</span>
-<a name="line-84"></a> <span class="n">uint</span> <span class="n">chunkId</span><span class="p">;</span>
-<a name="line-85"></a> <span class="n">uint</span> <span class="n">nbOfChunks</span><span class="p">;</span>
-<a name="line-86"></a> <span class="kt">int</span> <span class="n">version</span><span class="p">;</span>
-<a name="line-87"></a>
-<a name="line-88"></a> <span class="n">QByteArray</span> <span class="n">md5sum</span><span class="p">;</span>
-<a name="line-89"></a> <span class="n">QString</span> <span class="n">path</span><span class="p">;</span>
-<a name="line-90"></a> <span class="n">QString</span> <span class="n">tmpPath</span><span class="p">;</span> <span class="c1">// If set, contains a temporary file which must be deleted</span>
-<a name="line-91"></a> <span class="kt">int</span> <span class="n">albumId</span><span class="p">;</span>
-<a name="line-92"></a> <span class="kt">int</span> <span class="n">photoId</span><span class="p">;</span> <span class="c1">// Filled when the photo already exist</span>
-<a name="line-93"></a> <span class="n">QString</span> <span class="n">comment</span><span class="p">;</span> <span class="c1">// Synchronized with Piwigo comment</span>
-<a name="line-94"></a> <span class="n">QString</span> <span class="n">title</span><span class="p">;</span> <span class="c1">// Synchronized with Piwigo name</span>
-<a name="line-95"></a> <span class="n">QString</span> <span class="n">author</span><span class="p">;</span> <span class="c1">// Synchronized with Piwigo author</span>
-<a name="line-96"></a> <span class="n">QDateTime</span> <span class="n">date</span><span class="p">;</span> <span class="c1">// Synchronized with Piwigo date</span>
-<a name="line-97"></a> <span class="n">DInfoInterface</span><span class="o">*</span> <span class="n">iface</span><span class="p">;</span>
-<a name="line-98"></a><span class="p">};</span>
-<a name="line-99"></a>
-<a name="line-100"></a><span class="n">QString</span> <span class="n">PiwigoTalker</span><span class="o">::</span><span class="n">s_authToken</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">);</span>
-<a name="line-101"></a>
-<a name="line-102"></a><span class="n">PiwigoTalker</span><span class="o">::</span><span class="n">PiwigoTalker</span><span class="p">(</span><span class="n">DInfoInterface</span><span class="o">*</span> <span class="k">const</span> <span class="n">iface</span><span class="p">,</span> <span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span><span class="p">)</span>
-<a name="line-103"></a> <span class="o">:</span> <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">Private</span><span class="p">)</span>
-<a name="line-104"></a><span class="p">{</span>
-<a name="line-105"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span><span class="p">;</span>
-<a name="line-106"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span> <span class="o">=</span> <span class="n">iface</span><span class="p">;</span>
-<a name="line-107"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QNetworkAccessManager</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
+<a name="line-76"></a> <span class="c1">// for albums pagination</span>
+<a name="line-77"></a> <span class="c1">//in listAlbums()</span>
+<a name="line-78"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">YandexFotkiAlbum</span><span class="o">&gt;</span> <span class="n">albums</span><span class="p">;</span>
+<a name="line-79"></a>
+<a name="line-80"></a> <span class="n">QString</span> <span class="n">albumsNextUrl</span><span class="p">;</span>
+<a name="line-81"></a>
+<a name="line-82"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">YFPhoto</span><span class="o">&gt;</span> <span class="n">photos</span><span class="p">;</span>
+<a name="line-83"></a> <span class="n">QString</span> <span class="n">photosNextUrl</span><span class="p">;</span>
+<a name="line-84"></a>
+<a name="line-85"></a> <span class="n">QNetworkAccessManager</span><span class="o">*</span> <span class="n">netMngr</span><span class="p">;</span>
+<a name="line-86"></a>
+<a name="line-87"></a> <span class="n">QNetworkReply</span><span class="o">*</span> <span class="n">reply</span><span class="p">;</span>
+<a name="line-88"></a>
+<a name="line-89"></a> <span class="c1">// Data buffer</span>
+<a name="line-90"></a> <span class="n">QByteArray</span> <span class="n">buffer</span><span class="p">;</span>
+<a name="line-91"></a>
+<a name="line-92"></a> <span class="c1">// constants</span>
+<a name="line-93"></a> <span class="c1">// use QString instead of QUrl, we need .arg</span>
+<a name="line-94"></a> <span class="k">static</span> <span class="k">const</span> <span class="n">QString</span> <span class="n">SESSION_URL</span><span class="p">;</span>
+<a name="line-95"></a> <span class="k">static</span> <span class="k">const</span> <span class="n">QString</span> <span class="n">TOKEN_URL</span><span class="p">;</span>
+<a name="line-96"></a> <span class="k">static</span> <span class="k">const</span> <span class="n">QString</span> <span class="n">SERVICE_URL</span><span class="p">;</span>
+<a name="line-97"></a> <span class="k">static</span> <span class="k">const</span> <span class="n">QString</span> <span class="n">AUTH_REALM</span><span class="p">;</span>
+<a name="line-98"></a> <span class="k">static</span> <span class="k">const</span> <span class="n">QString</span> <span class="n">ACCESS_STRINGS</span><span class="p">[];</span>
+<a name="line-99"></a><span class="p">};</span>
+<a name="line-100"></a>
+<a name="line-101"></a><span class="cm">/*</span>
+<a name="line-102"></a><span class="cm"> * static API constants</span>
+<a name="line-103"></a><span class="cm"> */</span>
+<a name="line-104"></a><span class="k">const</span> <span class="n">QString</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">SESSION_URL</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;http://auth.mobile.yandex.ru/yamrsa/key/&quot;</span><span class="p">);</span>
+<a name="line-105"></a><span class="k">const</span> <span class="n">QString</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">AUTH_REALM</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;fotki.yandex.ru&quot;</span><span class="p">);</span>
+<a name="line-106"></a><span class="k">const</span> <span class="n">QString</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">TOKEN_URL</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;http://auth.mobile.yandex.ru/yamrsa/token/&quot;</span><span class="p">);</span>
+<a name="line-107"></a><span class="k">const</span> <span class="n">QString</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">SERVICE_URL</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;http://api-fotki.yandex.ru/api/users/%1/&quot;</span><span class="p">);</span>
<a name="line-108"></a>
-<a name="line-109"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">finished</span><span class="p">(</span><span class="n">QNetworkReply</span><span class="o">*</span><span class="p">)),</span>
-<a name="line-110"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotFinished</span><span class="p">(</span><span class="n">QNetworkReply</span><span class="o">*</span><span class="p">)));</span>
-<a name="line-111"></a><span class="p">}</span>
-<a name="line-112"></a>
-<a name="line-113"></a><span class="n">PiwigoTalker</span><span class="o">::~</span><span class="n">PiwigoTalker</span><span class="p">()</span>
-<a name="line-114"></a><span class="p">{</span>
-<a name="line-115"></a> <span class="n">cancel</span><span class="p">();</span>
-<a name="line-116"></a> <span class="n">WSToolUtils</span><span class="o">::</span><span class="n">removeTemporaryDir</span><span class="p">(</span><span class="s">&quot;piwigo&quot;</span><span class="p">);</span>
-<a name="line-117"></a>
-<a name="line-118"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
-<a name="line-119"></a><span class="p">}</span>
+<a name="line-109"></a><span class="k">const</span> <span class="n">QString</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">ACCESS_STRINGS</span><span class="p">[]</span> <span class="o">=</span>
+<a name="line-110"></a><span class="p">{</span>
+<a name="line-111"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;public&quot;</span><span class="p">),</span>
+<a name="line-112"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;friends&quot;</span><span class="p">),</span>
+<a name="line-113"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;private&quot;</span><span class="p">)</span>
+<a name="line-114"></a><span class="p">};</span>
+<a name="line-115"></a>
+<a name="line-116"></a><span class="k">const</span> <span class="n">QString</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">USERPAGE_URL</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;http://fotki.yandex.ru/users/%1/&quot;</span><span class="p">);</span>
+<a name="line-117"></a><span class="k">const</span> <span class="n">QString</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">USERPAGE_DEFAULT_URL</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;http://fotki.yandex.ru/&quot;</span><span class="p">);</span>
+<a name="line-118"></a>
+<a name="line-119"></a><span class="c1">// ------------------------------------------------------------</span>
<a name="line-120"></a>
-<a name="line-121"></a><span class="kt">void</span> <span class="n">PiwigoTalker</span><span class="o">::</span><span class="n">cancel</span><span class="p">()</span>
-<a name="line-122"></a><span class="p">{</span>
-<a name="line-123"></a> <span class="n">deleteTemporaryFile</span><span class="p">();</span>
-<a name="line-124"></a>
-<a name="line-125"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
-<a name="line-126"></a> <span class="p">{</span>
-<a name="line-127"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">abort</span><span class="p">();</span>
-<a name="line-128"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-129"></a> <span class="p">}</span>
-<a name="line-130"></a><span class="p">}</span>
-<a name="line-131"></a>
-<a name="line-132"></a><span class="n">QString</span> <span class="n">PiwigoTalker</span><span class="o">::</span><span class="n">getAuthToken</span><span class="p">()</span>
-<a name="line-133"></a><span class="p">{</span>
-<a name="line-134"></a> <span class="k">return</span> <span class="n">s_authToken</span><span class="p">;</span>
+<a name="line-121"></a><span class="n">YFTalker</span><span class="o">::</span><span class="n">YFTalker</span><span class="p">(</span><span class="n">QObject</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span><span class="p">)</span>
+<a name="line-122"></a> <span class="o">:</span> <span class="n">QObject</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span>
+<a name="line-123"></a> <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">Private</span><span class="p">)</span>
+<a name="line-124"></a><span class="p">{</span>
+<a name="line-125"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QNetworkAccessManager</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
+<a name="line-126"></a>
+<a name="line-127"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">finished</span><span class="p">(</span><span class="n">QNetworkReply</span><span class="o">*</span><span class="p">)),</span>
+<a name="line-128"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotFinished</span><span class="p">(</span><span class="n">QNetworkReply</span><span class="o">*</span><span class="p">)));</span>
+<a name="line-129"></a><span class="p">}</span>
+<a name="line-130"></a>
+<a name="line-131"></a><span class="n">YFTalker</span><span class="o">::~</span><span class="n">YFTalker</span><span class="p">()</span>
+<a name="line-132"></a><span class="p">{</span>
+<a name="line-133"></a> <span class="n">reset</span><span class="p">();</span>
+<a name="line-134"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
<a name="line-135"></a><span class="p">}</span>
<a name="line-136"></a>
-<a name="line-137"></a><span class="n">QByteArray</span> <span class="n">PiwigoTalker</span><span class="o">::</span><span class="n">computeMD5Sum</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">filepath</span><span class="p">)</span>
+<a name="line-137"></a><span class="n">YFTalker</span><span class="o">::</span><span class="n">State</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">state</span><span class="p">()</span> <span class="k">const</span>
<a name="line-138"></a><span class="p">{</span>
-<a name="line-139"></a> <span class="n">QFile</span> <span class="n">file</span><span class="p">(</span><span class="n">filepath</span><span class="p">);</span>
-<a name="line-140"></a>
-<a name="line-141"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">file</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="n">QIODevice</span><span class="o">::</span><span class="n">ReadOnly</span><span class="p">))</span>
-<a name="line-142"></a> <span class="p">{</span>
-<a name="line-143"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;File open error:&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">filepath</span><span class="p">;</span>
-<a name="line-144"></a> <span class="k">return</span> <span class="nf">QByteArray</span><span class="p">();</span>
-<a name="line-145"></a> <span class="p">}</span>
+<a name="line-139"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span><span class="p">;</span>
+<a name="line-140"></a><span class="p">}</span>
+<a name="line-141"></a>
+<a name="line-142"></a><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">sessionKey</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-143"></a><span class="p">{</span>
+<a name="line-144"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sessionKey</span><span class="p">;</span>
+<a name="line-145"></a><span class="p">}</span>
<a name="line-146"></a>
-<a name="line-147"></a> <span class="n">QByteArray</span> <span class="n">md5sum</span> <span class="o">=</span> <span class="n">QCryptographicHash</span><span class="o">::</span><span class="n">hash</span><span class="p">(</span><span class="n">file</span><span class="p">.</span><span class="n">readAll</span><span class="p">(),</span> <span class="n">QCryptographicHash</span><span class="o">::</span><span class="n">Md5</span><span class="p">);</span>
-<a name="line-148"></a> <span class="n">file</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
-<a name="line-149"></a>
-<a name="line-150"></a> <span class="k">return</span> <span class="n">md5sum</span><span class="p">;</span>
-<a name="line-151"></a><span class="p">}</span>
-<a name="line-152"></a>
-<a name="line-153"></a><span class="kt">bool</span> <span class="n">PiwigoTalker</span><span class="o">::</span><span class="n">loggedIn</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-154"></a><span class="p">{</span>
-<a name="line-155"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">loggedIn</span><span class="p">;</span>
-<a name="line-156"></a><span class="p">}</span>
-<a name="line-157"></a>
-<a name="line-158"></a><span class="kt">void</span> <span class="n">PiwigoTalker</span><span class="o">::</span><span class="n">login</span><span class="p">(</span><span class="k">const</span> <span class="n">QUrl</span><span class="o">&amp;</span> <span class="n">url</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">name</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">passwd</span><span class="p">)</span>
-<a name="line-159"></a><span class="p">{</span>
-<a name="line-160"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span><span class="p">;</span>
-<a name="line-161"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">GE_LOGIN</span><span class="p">;</span>
-<a name="line-162"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker_buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-163"></a>
-<a name="line-164"></a> <span class="c1">// Add the page to the URL</span>
-<a name="line-165"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">url</span><span class="p">.</span><span class="n">url</span><span class="p">().</span><span class="n">endsWith</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;.php&quot;</span><span class="p">)))</span>
-<a name="line-166"></a> <span class="p">{</span>
-<a name="line-167"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">url</span><span class="p">.</span><span class="n">setPath</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">url</span><span class="p">.</span><span class="n">path</span><span class="p">()</span> <span class="o">+</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;ws.php&quot;</span><span class="p">));</span>
-<a name="line-168"></a> <span class="p">}</span>
-<a name="line-169"></a>
-<a name="line-170"></a> <span class="n">s_authToken</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="n">QUuid</span><span class="o">::</span><span class="n">createUuid</span><span class="p">().</span><span class="n">toByteArray</span><span class="p">().</span><span class="n">toBase64</span><span class="p">());</span>
+<a name="line-147"></a><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">sessionId</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-148"></a><span class="p">{</span>
+<a name="line-149"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sessionId</span><span class="p">;</span>
+<a name="line-150"></a><span class="p">}</span>
+<a name="line-151"></a>
+<a name="line-152"></a><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">token</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-153"></a><span class="p">{</span>
+<a name="line-154"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">token</span><span class="p">;</span>
+<a name="line-155"></a><span class="p">}</span>
+<a name="line-156"></a>
+<a name="line-157"></a><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">login</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-158"></a><span class="p">{</span>
+<a name="line-159"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">login</span><span class="p">;</span>
+<a name="line-160"></a><span class="p">}</span>
+<a name="line-161"></a>
+<a name="line-162"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">setLogin</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">login</span><span class="p">)</span>
+<a name="line-163"></a><span class="p">{</span>
+<a name="line-164"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">login</span> <span class="o">=</span> <span class="n">login</span><span class="p">;</span>
+<a name="line-165"></a><span class="p">}</span>
+<a name="line-166"></a>
+<a name="line-167"></a><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">password</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-168"></a><span class="p">{</span>
+<a name="line-169"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">password</span><span class="p">;</span>
+<a name="line-170"></a><span class="p">}</span>
<a name="line-171"></a>
-<a name="line-172"></a> <span class="n">QStringList</span> <span class="n">qsl</span><span class="p">;</span>
-<a name="line-173"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;password=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">passwd</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">().</span><span class="n">toPercentEncoding</span><span class="p">()));</span>
-<a name="line-174"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;method=pwg.session.login&quot;</span><span class="p">));</span>
-<a name="line-175"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;username=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">name</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">().</span><span class="n">toPercentEncoding</span><span class="p">()));</span>
-<a name="line-176"></a> <span class="n">QString</span> <span class="n">dataParameters</span> <span class="o">=</span> <span class="n">qsl</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;&amp;&#39;</span><span class="p">));</span>
-<a name="line-177"></a> <span class="n">QByteArray</span> <span class="n">buffer</span><span class="p">;</span>
-<a name="line-178"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">dataParameters</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">());</span>
-<a name="line-179"></a>
-<a name="line-180"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">url</span><span class="p">);</span>
-<a name="line-181"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/x-www-form-urlencoded&quot;</span><span class="p">));</span>
-<a name="line-182"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">s_authToken</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">());</span>
-<a name="line-183"></a>
-<a name="line-184"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">buffer</span><span class="p">);</span>
-<a name="line-185"></a>
-<a name="line-186"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-187"></a><span class="p">}</span>
-<a name="line-188"></a>
-<a name="line-189"></a><span class="kt">void</span> <span class="n">PiwigoTalker</span><span class="o">::</span><span class="n">listAlbums</span><span class="p">()</span>
-<a name="line-190"></a><span class="p">{</span>
-<a name="line-191"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">GE_LISTALBUMS</span><span class="p">;</span>
-<a name="line-192"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker_buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-193"></a>
-<a name="line-194"></a> <span class="n">QStringList</span> <span class="n">qsl</span><span class="p">;</span>
-<a name="line-195"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;method=pwg.categories.getList&quot;</span><span class="p">));</span>
-<a name="line-196"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;recursive=true&quot;</span><span class="p">));</span>
-<a name="line-197"></a> <span class="n">QString</span> <span class="n">dataParameters</span> <span class="o">=</span> <span class="n">qsl</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;&amp;&#39;</span><span class="p">));</span>
-<a name="line-198"></a> <span class="n">QByteArray</span> <span class="n">buffer</span><span class="p">;</span>
-<a name="line-199"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">dataParameters</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">());</span>
+<a name="line-172"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">setPassword</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">password</span><span class="p">)</span>
+<a name="line-173"></a><span class="p">{</span>
+<a name="line-174"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">password</span> <span class="o">=</span> <span class="n">password</span><span class="p">;</span>
+<a name="line-175"></a><span class="p">}</span>
+<a name="line-176"></a>
+<a name="line-177"></a><span class="kt">bool</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">isAuthenticated</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-178"></a><span class="p">{</span>
+<a name="line-179"></a> <span class="k">return</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">&amp;</span> <span class="n">STATE_AUTHENTICATED</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-180"></a><span class="p">}</span>
+<a name="line-181"></a>
+<a name="line-182"></a><span class="kt">bool</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">isErrorState</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-183"></a><span class="p">{</span>
+<a name="line-184"></a> <span class="k">return</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">&amp;</span> <span class="n">STATE_ERROR</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-185"></a><span class="p">}</span>
+<a name="line-186"></a>
+<a name="line-187"></a><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">YandexFotkiAlbum</span><span class="o">&gt;&amp;</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">albums</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-188"></a><span class="p">{</span>
+<a name="line-189"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albums</span><span class="p">;</span>
+<a name="line-190"></a><span class="p">}</span>
+<a name="line-191"></a>
+<a name="line-192"></a><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">YFPhoto</span><span class="o">&gt;&amp;</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">photos</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-193"></a><span class="p">{</span>
+<a name="line-194"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">;</span>
+<a name="line-195"></a><span class="p">}</span>
+<a name="line-196"></a>
+<a name="line-197"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">getService</span><span class="p">()</span>
+<a name="line-198"></a><span class="p">{</span>
+<a name="line-199"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_GETSERVICE</span><span class="p">;</span>
<a name="line-200"></a>
-<a name="line-201"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">url</span><span class="p">);</span>
-<a name="line-202"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/x-www-form-urlencoded&quot;</span><span class="p">));</span>
-<a name="line-203"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">s_authToken</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">());</span>
+<a name="line-201"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">SERVICE_URL</span><span class="p">.</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">login</span><span class="p">));</span>
+<a name="line-202"></a>
+<a name="line-203"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">get</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="p">(</span><span class="n">url</span><span class="p">));</span>
<a name="line-204"></a>
-<a name="line-205"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">buffer</span><span class="p">);</span>
-<a name="line-206"></a>
-<a name="line-207"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-208"></a><span class="p">}</span>
-<a name="line-209"></a>
-<a name="line-210"></a><span class="kt">bool</span> <span class="n">PiwigoTalker</span><span class="o">::</span><span class="n">addPhoto</span><span class="p">(</span><span class="kt">int</span> <span class="n">albumId</span><span class="p">,</span>
-<a name="line-211"></a> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">mediaPath</span><span class="p">,</span>
-<a name="line-212"></a> <span class="kt">bool</span> <span class="n">rescale</span><span class="p">,</span>
-<a name="line-213"></a> <span class="kt">int</span> <span class="n">maxWidth</span><span class="p">,</span>
-<a name="line-214"></a> <span class="kt">int</span> <span class="n">maxHeight</span><span class="p">,</span>
-<a name="line-215"></a> <span class="kt">int</span> <span class="n">quality</span><span class="p">)</span>
-<a name="line-216"></a><span class="p">{</span>
-<a name="line-217"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">GE_CHECKPHOTOEXIST</span><span class="p">;</span>
-<a name="line-218"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker_buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-219"></a>
-<a name="line-220"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">mediaPath</span><span class="p">;</span> <span class="c1">// By default, d-&gt;path contains the original file</span>
-<a name="line-221"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tmpPath</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">);</span> <span class="c1">// By default, no temporary file (except with rescaling)</span>
-<a name="line-222"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albumId</span> <span class="o">=</span> <span class="n">albumId</span><span class="p">;</span>
+<a name="line-205"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-206"></a><span class="p">}</span>
+<a name="line-207"></a>
+<a name="line-208"></a><span class="cm">/*</span>
+<a name="line-209"></a><span class="cm">void YFTalker::checkToken()</span>
+<a name="line-210"></a><span class="cm">{</span>
+<a name="line-211"></a><span class="cm"> // try to get something with our token, if it is invalid catch 401</span>
+<a name="line-212"></a><span class="cm"> d-&gt;state = STATE_CHECKTOKEN;</span>
+<a name="line-213"></a>
+<a name="line-214"></a><span class="cm"> QUrl url(d-&gt;apiAlbumsUrl);</span>
+<a name="line-215"></a><span class="cm"> QNetworkRequest netRequest(url);</span>
+<a name="line-216"></a><span class="cm"> netRequest.setRawHeader(&quot;Authorization&quot;, QString::fromLatin1(&quot;FimpToken realm=\&quot;%1\&quot;, token=\&quot;%2\&quot;&quot;)</span>
+<a name="line-217"></a><span class="cm"> .arg(AUTH_REALM).arg(d-&gt;token).toLatin1());</span>
+<a name="line-218"></a>
+<a name="line-219"></a><span class="cm"> d-&gt;reply = d-&gt;netMngr-&gt;get(netRequest);</span>
+<a name="line-220"></a>
+<a name="line-221"></a><span class="cm"> // Error: STATE_CHECKTOKEN_INVALID</span>
+<a name="line-222"></a><span class="cm"> // Function: slotParseResponseCheckToken()</span>
<a name="line-223"></a>
-<a name="line-224"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">md5sum</span> <span class="o">=</span> <span class="n">computeMD5Sum</span><span class="p">(</span><span class="n">mediaPath</span><span class="p">);</span>
-<a name="line-225"></a>
-<a name="line-226"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">mediaPath</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">md5sum</span><span class="p">.</span><span class="n">toHex</span><span class="p">();</span>
+<a name="line-224"></a><span class="cm"> d-&gt;buffer.resize(0);</span>
+<a name="line-225"></a><span class="cm">}</span>
+<a name="line-226"></a><span class="cm">*/</span>
<a name="line-227"></a>
-<a name="line-228"></a> <span class="k">if</span> <span class="p">(</span><span class="n">mediaPath</span><span class="p">.</span><span class="n">endsWith</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;.mp4&quot;</span><span class="p">))</span> <span class="o">||</span> <span class="n">mediaPath</span><span class="p">.</span><span class="n">endsWith</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;.MP4&quot;</span><span class="p">))</span> <span class="o">||</span>
-<a name="line-229"></a> <span class="n">mediaPath</span><span class="p">.</span><span class="n">endsWith</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;.ogg&quot;</span><span class="p">))</span> <span class="o">||</span> <span class="n">mediaPath</span><span class="p">.</span><span class="n">endsWith</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;.OGG&quot;</span><span class="p">))</span> <span class="o">||</span>
-<a name="line-230"></a> <span class="n">mediaPath</span><span class="p">.</span><span class="n">endsWith</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;.webm&quot;</span><span class="p">))</span> <span class="o">||</span> <span class="n">mediaPath</span><span class="p">.</span><span class="n">endsWith</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;.WEBM&quot;</span><span class="p">)))</span>
-<a name="line-231"></a> <span class="p">{</span>
-<a name="line-232"></a> <span class="c1">// Video management</span>
-<a name="line-233"></a> <span class="c1">// Nothing to do</span>
-<a name="line-234"></a> <span class="p">}</span>
-<a name="line-235"></a> <span class="k">else</span>
-<a name="line-236"></a> <span class="p">{</span>
-<a name="line-237"></a> <span class="c1">// Image management</span>
+<a name="line-228"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">getSession</span><span class="p">()</span>
+<a name="line-229"></a><span class="p">{</span>
+<a name="line-230"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">!=</span> <span class="n">STATE_GETSERVICE_DONE</span><span class="p">)</span>
+<a name="line-231"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-232"></a>
+<a name="line-233"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_GETSESSION</span><span class="p">;</span>
+<a name="line-234"></a>
+<a name="line-235"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">SESSION_URL</span><span class="p">);</span>
+<a name="line-236"></a>
+<a name="line-237"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">get</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="p">(</span><span class="n">url</span><span class="p">));</span>
<a name="line-238"></a>
-<a name="line-239"></a> <span class="n">QImage</span> <span class="n">image</span> <span class="o">=</span> <span class="n">PreviewLoadThread</span><span class="o">::</span><span class="n">loadHighQualitySynchronously</span><span class="p">(</span><span class="n">mediaPath</span><span class="p">).</span><span class="n">copyQImage</span><span class="p">();</span>
-<a name="line-240"></a>
-<a name="line-241"></a> <span class="k">if</span> <span class="p">(</span><span class="n">image</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
-<a name="line-242"></a> <span class="p">{</span>
-<a name="line-243"></a> <span class="n">image</span><span class="p">.</span><span class="n">load</span><span class="p">(</span><span class="n">mediaPath</span><span class="p">);</span>
-<a name="line-244"></a> <span class="p">}</span>
-<a name="line-245"></a>
-<a name="line-246"></a> <span class="k">if</span> <span class="p">(</span><span class="n">image</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
-<a name="line-247"></a> <span class="p">{</span>
-<a name="line-248"></a> <span class="c1">// Invalid image</span>
-<a name="line-249"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-250"></a> <span class="p">}</span>
-<a name="line-251"></a>
-<a name="line-252"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">rescale</span><span class="p">)</span>
-<a name="line-253"></a> <span class="p">{</span>
-<a name="line-254"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Upload the original version: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">;</span>
-<a name="line-255"></a> <span class="p">}</span>
-<a name="line-256"></a> <span class="k">else</span>
-<a name="line-257"></a> <span class="p">{</span>
-<a name="line-258"></a> <span class="c1">// Rescale the image</span>
-<a name="line-259"></a> <span class="k">if</span> <span class="p">(</span><span class="n">image</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">maxWidth</span> <span class="o">||</span> <span class="n">image</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">maxHeight</span><span class="p">)</span>
-<a name="line-260"></a> <span class="p">{</span>
-<a name="line-261"></a> <span class="n">image</span> <span class="o">=</span> <span class="n">image</span><span class="p">.</span><span class="n">scaled</span><span class="p">(</span><span class="n">maxWidth</span><span class="p">,</span> <span class="n">maxHeight</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">KeepAspectRatio</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">SmoothTransformation</span><span class="p">);</span>
-<a name="line-262"></a> <span class="p">}</span>
-<a name="line-263"></a>
-<a name="line-264"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">WSToolUtils</span><span class="o">::</span><span class="n">makeTemporaryDir</span><span class="p">(</span><span class="s">&quot;piwigo&quot;</span><span class="p">)</span>
-<a name="line-265"></a> <span class="p">.</span><span class="n">filePath</span><span class="p">(</span><span class="n">QUrl</span><span class="o">::</span><span class="n">fromLocalFile</span><span class="p">(</span><span class="n">mediaPath</span><span class="p">).</span><span class="n">fileName</span><span class="p">());</span>
-<a name="line-266"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tmpPath</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">;</span>
-<a name="line-267"></a> <span class="n">image</span><span class="p">.</span><span class="n">save</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">,</span> <span class="s">&quot;JPEG&quot;</span><span class="p">,</span> <span class="n">quality</span><span class="p">);</span>
-<a name="line-268"></a>
-<a name="line-269"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Upload a resized version: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">path</span> <span class="p">;</span>
-<a name="line-270"></a>
-<a name="line-271"></a> <span class="c1">// Restore all metadata with EXIF</span>
-<a name="line-272"></a> <span class="c1">// in the resized version</span>
-<a name="line-273"></a>
-<a name="line-274"></a> <span class="n">DMetadata</span> <span class="n">meta</span><span class="p">;</span>
-<a name="line-275"></a>
-<a name="line-276"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">load</span><span class="p">(</span><span class="n">mediaPath</span><span class="p">))</span>
-<a name="line-277"></a> <span class="p">{</span>
-<a name="line-278"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setItemDimensions</span><span class="p">(</span><span class="n">image</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
-<a name="line-279"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setItemOrientation</span><span class="p">(</span><span class="n">MetaEngine</span><span class="o">::</span><span class="n">ORIENTATION_NORMAL</span><span class="p">);</span>
-<a name="line-280"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setMetadataWritingMode</span><span class="p">((</span><span class="kt">int</span><span class="p">)</span><span class="n">DMetadata</span><span class="o">::</span><span class="n">WRITE_TO_FILE_ONLY</span><span class="p">);</span>
-<a name="line-281"></a> <span class="n">meta</span><span class="p">.</span><span class="n">save</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">,</span> <span class="nb">true</span><span class="p">);</span>
-<a name="line-282"></a> <span class="p">}</span>
-<a name="line-283"></a> <span class="k">else</span>
-<a name="line-284"></a> <span class="p">{</span>
-<a name="line-285"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Image &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">mediaPath</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; has no exif data&quot;</span><span class="p">;</span>
-<a name="line-286"></a> <span class="p">}</span>
-<a name="line-287"></a> <span class="p">}</span>
-<a name="line-288"></a> <span class="p">}</span>
-<a name="line-289"></a>
-<a name="line-290"></a> <span class="c1">// Metadata management</span>
+<a name="line-239"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-240"></a><span class="p">}</span>
+<a name="line-241"></a>
+<a name="line-242"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">getToken</span><span class="p">()</span>
+<a name="line-243"></a><span class="p">{</span>
+<a name="line-244"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">!=</span> <span class="n">STATE_GETSESSION_DONE</span><span class="p">)</span>
+<a name="line-245"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-246"></a>
+<a name="line-247"></a> <span class="k">const</span> <span class="n">QString</span> <span class="n">credentials</span> <span class="o">=</span> <span class="n">YFAuth</span><span class="o">::</span><span class="n">makeCredentials</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sessionKey</span><span class="p">,</span>
+<a name="line-248"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">login</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">password</span><span class="p">);</span>
+<a name="line-249"></a>
+<a name="line-250"></a> <span class="c1">// prepare params</span>
+<a name="line-251"></a> <span class="n">QStringList</span> <span class="n">paramList</span><span class="p">;</span>
+<a name="line-252"></a>
+<a name="line-253"></a> <span class="n">paramList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;request_id=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sessionId</span><span class="p">);</span>
+<a name="line-254"></a>
+<a name="line-255"></a> <span class="n">paramList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;credentials=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">QUrl</span><span class="o">::</span><span class="n">toPercentEncoding</span><span class="p">(</span><span class="n">credentials</span><span class="p">)));</span>
+<a name="line-256"></a>
+<a name="line-257"></a> <span class="n">QString</span> <span class="n">params</span> <span class="o">=</span> <span class="n">paramList</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;&amp;&#39;</span><span class="p">));</span>
+<a name="line-258"></a>
+<a name="line-259"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_GETTOKEN</span><span class="p">;</span>
+<a name="line-260"></a>
+<a name="line-261"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">TOKEN_URL</span><span class="p">);</span>
+<a name="line-262"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+<a name="line-263"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/x-www-form-urlencoded&quot;</span><span class="p">));</span>
+<a name="line-264"></a>
+<a name="line-265"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">params</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">());</span>
+<a name="line-266"></a>
+<a name="line-267"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-268"></a><span class="p">}</span>
+<a name="line-269"></a>
+<a name="line-270"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">listAlbums</span><span class="p">()</span>
+<a name="line-271"></a><span class="p">{</span>
+<a name="line-272"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isErrorState</span><span class="p">()</span> <span class="o">||</span> <span class="o">!</span><span class="n">isAuthenticated</span><span class="p">())</span>
+<a name="line-273"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-274"></a>
+<a name="line-275"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albumsNextUrl</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">apiAlbumsUrl</span><span class="p">;</span>
+<a name="line-276"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albums</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
+<a name="line-277"></a> <span class="n">listAlbumsNext</span><span class="p">();</span>
+<a name="line-278"></a><span class="p">}</span>
+<a name="line-279"></a>
+<a name="line-280"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">listAlbumsNext</span><span class="p">()</span>
+<a name="line-281"></a><span class="p">{</span>
+<a name="line-282"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;listAlbumsNext&quot;</span><span class="p">;</span>
+<a name="line-283"></a>
+<a name="line-284"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_LISTALBUMS</span><span class="p">;</span>
+<a name="line-285"></a>
+<a name="line-286"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">albumsNextUrl</span><span class="p">);</span>
+<a name="line-287"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+<a name="line-288"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/atom+xml; charset=utf-8; type=feed&quot;</span><span class="p">));</span>
+<a name="line-289"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;FimpToken realm=</span><span class="se">\&quot;</span><span class="s">%1</span><span class="se">\&quot;</span><span class="s">, token=</span><span class="se">\&quot;</span><span class="s">%2</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">)</span>
+<a name="line-290"></a> <span class="p">.</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">AUTH_REALM</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">token</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">());</span>
<a name="line-291"></a>
-<a name="line-292"></a> <span class="c1">// Complete name and comment for summary sending</span>
-<a name="line-293"></a> <span class="n">QFileInfo</span> <span class="n">fi</span><span class="p">(</span><span class="n">mediaPath</span><span class="p">);</span>
-<a name="line-294"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">title</span> <span class="o">=</span> <span class="n">fi</span><span class="p">.</span><span class="n">completeBaseName</span><span class="p">();</span>
-<a name="line-295"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">comment</span> <span class="o">=</span> <span class="n">QString</span><span class="p">();</span>
-<a name="line-296"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">author</span> <span class="o">=</span> <span class="n">QString</span><span class="p">();</span>
-<a name="line-297"></a>
-<a name="line-298"></a><span class="cp">#if (QT_VERSION &gt;= QT_VERSION_CHECK(5, 10, 0))</span>
-<a name="line-299"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">date</span> <span class="o">=</span> <span class="n">fi</span><span class="p">.</span><span class="n">birthTime</span><span class="p">();</span>
-<a name="line-300"></a><span class="cp">#else</span>
-<a name="line-301"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">date</span> <span class="o">=</span> <span class="n">fi</span><span class="p">.</span><span class="n">created</span><span class="p">();</span>
-<a name="line-302"></a><span class="cp">#endif</span>
-<a name="line-303"></a>
-<a name="line-304"></a> <span class="c1">// Look in the host database</span>
-<a name="line-305"></a>
-<a name="line-306"></a> <span class="n">DItemInfo</span> <span class="nf">info</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span><span class="o">-&gt;</span><span class="n">itemInfo</span><span class="p">(</span><span class="n">QUrl</span><span class="o">::</span><span class="n">fromLocalFile</span><span class="p">(</span><span class="n">mediaPath</span><span class="p">)));</span>
-<a name="line-307"></a>
-<a name="line-308"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">title</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-309"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">title</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">title</span><span class="p">();</span>
-<a name="line-310"></a>
-<a name="line-311"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">comment</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-312"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">comment</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">comment</span><span class="p">();</span>
+<a name="line-292"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">get</span><span class="p">(</span><span class="n">netRequest</span><span class="p">);</span>
+<a name="line-293"></a>
+<a name="line-294"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-295"></a><span class="p">}</span>
+<a name="line-296"></a>
+<a name="line-297"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">listPhotos</span><span class="p">(</span><span class="k">const</span> <span class="n">YandexFotkiAlbum</span><span class="o">&amp;</span> <span class="n">album</span><span class="p">)</span>
+<a name="line-298"></a><span class="p">{</span>
+<a name="line-299"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isErrorState</span><span class="p">()</span> <span class="o">||</span> <span class="o">!</span><span class="n">isAuthenticated</span><span class="p">())</span>
+<a name="line-300"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-301"></a>
+<a name="line-302"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photosNextUrl</span> <span class="o">=</span> <span class="n">album</span><span class="p">.</span><span class="n">m_apiPhotosUrl</span><span class="p">;</span>
+<a name="line-303"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
+<a name="line-304"></a> <span class="n">listPhotosNext</span><span class="p">();</span>
+<a name="line-305"></a><span class="p">}</span>
+<a name="line-306"></a>
+<a name="line-307"></a><span class="c1">// protected member</span>
+<a name="line-308"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">listPhotosNext</span><span class="p">()</span>
+<a name="line-309"></a><span class="p">{</span>
+<a name="line-310"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;listPhotosNext&quot;</span><span class="p">;</span>
+<a name="line-311"></a>
+<a name="line-312"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_LISTPHOTOS</span><span class="p">;</span>
<a name="line-313"></a>
-<a name="line-314"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">creators</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-315"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">author</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">creators</span><span class="p">().</span><span class="n">join</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot; / &quot;</span><span class="p">));</span>
-<a name="line-316"></a>
-<a name="line-317"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">dateTime</span><span class="p">().</span><span class="n">isNull</span><span class="p">())</span>
-<a name="line-318"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">date</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">dateTime</span><span class="p">();</span>
+<a name="line-314"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">photosNextUrl</span><span class="p">);</span>
+<a name="line-315"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+<a name="line-316"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/atom+xml; charset=utf-8; type=feed&quot;</span><span class="p">));</span>
+<a name="line-317"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;FimpToken realm=</span><span class="se">\&quot;</span><span class="s">%1</span><span class="se">\&quot;</span><span class="s">, token=</span><span class="se">\&quot;</span><span class="s">%2</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">)</span>
+<a name="line-318"></a> <span class="p">.</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">AUTH_REALM</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">token</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">());</span>
<a name="line-319"></a>
-<a name="line-320"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Title: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">title</span><span class="p">;</span>
-<a name="line-321"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Comment: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">comment</span><span class="p">;</span>
-<a name="line-322"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Author: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">author</span><span class="p">;</span>
-<a name="line-323"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Date: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">;</span>
+<a name="line-320"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">get</span><span class="p">(</span><span class="n">netRequest</span><span class="p">);</span>
+<a name="line-321"></a>
+<a name="line-322"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-323"></a><span class="p">}</span>
<a name="line-324"></a>
-<a name="line-325"></a> <span class="n">QStringList</span> <span class="n">qsl</span><span class="p">;</span>
-<a name="line-326"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;method=pwg.images.exist&quot;</span><span class="p">));</span>
-<a name="line-327"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;md5sud-&gt;list=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">md5sum</span><span class="p">.</span><span class="n">toHex</span><span class="p">()));</span>
-<a name="line-328"></a> <span class="n">QString</span> <span class="n">dataParameters</span> <span class="o">=</span> <span class="n">qsl</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;&amp;&#39;</span><span class="p">));</span>
-<a name="line-329"></a> <span class="n">QByteArray</span> <span class="n">buffer</span><span class="p">;</span>
-<a name="line-330"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">dataParameters</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">());</span>
-<a name="line-331"></a>
-<a name="line-332"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">url</span><span class="p">);</span>
-<a name="line-333"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/x-www-form-urlencoded&quot;</span><span class="p">));</span>
-<a name="line-334"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">s_authToken</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">());</span>
+<a name="line-325"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">updatePhoto</span><span class="p">(</span><span class="n">YFPhoto</span><span class="o">&amp;</span> <span class="n">photo</span><span class="p">,</span> <span class="k">const</span> <span class="n">YandexFotkiAlbum</span><span class="o">&amp;</span> <span class="n">album</span><span class="p">)</span>
+<a name="line-326"></a><span class="p">{</span>
+<a name="line-327"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isErrorState</span><span class="p">()</span> <span class="o">||</span> <span class="o">!</span><span class="n">isAuthenticated</span><span class="p">())</span>
+<a name="line-328"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-329"></a>
+<a name="line-330"></a> <span class="c1">// sanity check</span>
+<a name="line-331"></a> <span class="k">if</span> <span class="p">(</span><span class="n">photo</span><span class="p">.</span><span class="n">title</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-332"></a> <span class="p">{</span>
+<a name="line-333"></a> <span class="n">photo</span><span class="p">.</span><span class="n">setTitle</span><span class="p">(</span><span class="n">QFileInfo</span><span class="p">(</span><span class="n">photo</span><span class="p">.</span><span class="n">localUrl</span><span class="p">()).</span><span class="n">baseName</span><span class="p">().</span><span class="n">trimmed</span><span class="p">());</span>
+<a name="line-334"></a> <span class="p">}</span>
<a name="line-335"></a>
-<a name="line-336"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">buffer</span><span class="p">);</span>
-<a name="line-337"></a>
-<a name="line-338"></a> <span class="n">emit</span> <span class="nf">signalProgressInfo</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Check if %1 already exists&quot;</span><span class="p">,</span> <span class="n">QUrl</span><span class="p">(</span><span class="n">mediaPath</span><span class="p">).</span><span class="n">fileName</span><span class="p">()));</span>
-<a name="line-339"></a>
-<a name="line-340"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-341"></a>
-<a name="line-342"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-343"></a><span class="p">}</span>
-<a name="line-344"></a>
-<a name="line-345"></a><span class="kt">void</span> <span class="n">PiwigoTalker</span><span class="o">::</span><span class="n">slotFinished</span><span class="p">(</span><span class="n">QNetworkReply</span><span class="o">*</span> <span class="n">reply</span><span class="p">)</span>
-<a name="line-346"></a><span class="p">{</span>
-<a name="line-347"></a> <span class="k">if</span> <span class="p">(</span><span class="n">reply</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
+<a name="line-336"></a> <span class="c1">// move photo to another album (if changed)</span>
+<a name="line-337"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_apiAlbumUrl</span> <span class="o">=</span> <span class="n">album</span><span class="p">.</span><span class="n">m_apiSelfUrl</span><span class="p">;</span>
+<a name="line-338"></a> <span class="c1">// FIXME: hack</span>
+<a name="line-339"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">lastPhotosUrl</span> <span class="o">=</span> <span class="n">album</span><span class="p">.</span><span class="n">m_apiPhotosUrl</span><span class="p">;</span>
+<a name="line-340"></a>
+<a name="line-341"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">photo</span><span class="p">.</span><span class="n">remoteUrl</span><span class="p">().</span><span class="n">isNull</span><span class="p">())</span>
+<a name="line-342"></a> <span class="p">{</span>
+<a name="line-343"></a> <span class="c1">// TODO: updating image file haven&#39;t yet supported by API</span>
+<a name="line-344"></a> <span class="c1">// so, just update info</span>
+<a name="line-345"></a> <span class="k">return</span> <span class="n">updatePhotoInfo</span><span class="p">(</span><span class="n">photo</span><span class="p">);</span>
+<a name="line-346"></a> <span class="p">}</span>
+<a name="line-347"></a> <span class="k">else</span>
<a name="line-348"></a> <span class="p">{</span>
-<a name="line-349"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-350"></a> <span class="p">}</span>
-<a name="line-351"></a>
-<a name="line-352"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-353"></a> <span class="n">State</span> <span class="n">state</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span><span class="p">;</span> <span class="c1">// Can change in the treatment itself, so we cache it</span>
-<a name="line-354"></a>
-<a name="line-355"></a> <span class="k">if</span> <span class="p">(</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">error</span><span class="p">()</span> <span class="o">!=</span> <span class="n">QNetworkReply</span><span class="o">::</span><span class="n">NoError</span><span class="p">)</span>
-<a name="line-356"></a> <span class="p">{</span>
-<a name="line-357"></a> <span class="k">if</span> <span class="p">(</span><span class="n">state</span> <span class="o">==</span> <span class="n">GE_LOGIN</span><span class="p">)</span>
-<a name="line-358"></a> <span class="p">{</span>
-<a name="line-359"></a> <span class="n">emit</span> <span class="n">signalLoginFailed</span><span class="p">(</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">errorString</span><span class="p">());</span>
-<a name="line-360"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">errorString</span><span class="p">();</span>
-<a name="line-361"></a> <span class="p">}</span>
-<a name="line-362"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">state</span> <span class="o">==</span> <span class="n">GE_GETVERSION</span><span class="p">)</span>
-<a name="line-363"></a> <span class="p">{</span>
-<a name="line-364"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">errorString</span><span class="p">();</span>
-<a name="line-365"></a> <span class="c1">// Version isn&#39;t mandatory and errors can be ignored</span>
-<a name="line-366"></a> <span class="c1">// As login succeeded, albums can be listed</span>
-<a name="line-367"></a> <span class="n">listAlbums</span><span class="p">();</span>
-<a name="line-368"></a> <span class="p">}</span>
-<a name="line-369"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">state</span> <span class="o">==</span> <span class="n">GE_CHECKPHOTOEXIST</span> <span class="o">||</span> <span class="n">state</span> <span class="o">==</span> <span class="n">GE_GETINFO</span> <span class="o">||</span>
-<a name="line-370"></a> <span class="n">state</span> <span class="o">==</span> <span class="n">GE_SETINFO</span> <span class="o">||</span> <span class="n">state</span> <span class="o">==</span> <span class="n">GE_ADDPHOTOCHUNK</span> <span class="o">||</span>
-<a name="line-371"></a> <span class="n">state</span> <span class="o">==</span> <span class="n">GE_ADDPHOTOSUMMARY</span><span class="p">)</span>
-<a name="line-372"></a> <span class="p">{</span>
-<a name="line-373"></a> <span class="n">deleteTemporaryFile</span><span class="p">();</span>
-<a name="line-374"></a> <span class="n">emit</span> <span class="nf">signalAddPhotoFailed</span><span class="p">(</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">errorString</span><span class="p">());</span>
-<a name="line-375"></a> <span class="p">}</span>
-<a name="line-376"></a> <span class="k">else</span>
-<a name="line-377"></a> <span class="p">{</span>
-<a name="line-378"></a> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">critical</span><span class="p">(</span><span class="n">QApplication</span><span class="o">::</span><span class="n">activeWindow</span><span class="p">(),</span>
-<a name="line-379"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Error&quot;</span><span class="p">),</span> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">errorString</span><span class="p">());</span>
-<a name="line-380"></a> <span class="p">}</span>
+<a name="line-349"></a> <span class="c1">// for new images also upload file</span>
+<a name="line-350"></a> <span class="n">updatePhotoFile</span><span class="p">(</span><span class="n">photo</span><span class="p">);</span>
+<a name="line-351"></a> <span class="p">}</span>
+<a name="line-352"></a><span class="p">}</span>
+<a name="line-353"></a>
+<a name="line-354"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">updatePhotoFile</span><span class="p">(</span><span class="n">YFPhoto</span><span class="o">&amp;</span> <span class="n">photo</span><span class="p">)</span>
+<a name="line-355"></a><span class="p">{</span>
+<a name="line-356"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;updatePhotoFile&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">photo</span><span class="p">;</span>
+<a name="line-357"></a>
+<a name="line-358"></a> <span class="n">QFile</span> <span class="nf">imageFile</span><span class="p">(</span><span class="n">photo</span><span class="p">.</span><span class="n">localUrl</span><span class="p">());</span>
+<a name="line-359"></a>
+<a name="line-360"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">imageFile</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="n">QIODevice</span><span class="o">::</span><span class="n">ReadOnly</span><span class="p">))</span>
+<a name="line-361"></a> <span class="p">{</span>
+<a name="line-362"></a> <span class="n">setErrorState</span><span class="p">(</span><span class="n">STATE_UPDATEPHOTO_FILE_ERROR</span><span class="p">);</span>
+<a name="line-363"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-364"></a> <span class="p">}</span>
+<a name="line-365"></a>
+<a name="line-366"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_UPDATEPHOTO_FILE</span><span class="p">;</span>
+<a name="line-367"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">lastPhoto</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">photo</span><span class="p">;</span>
+<a name="line-368"></a>
+<a name="line-369"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">lastPhotosUrl</span><span class="p">);</span>
+<a name="line-370"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+<a name="line-371"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;image/jpeg&quot;</span><span class="p">));</span>
+<a name="line-372"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;FimpToken realm=</span><span class="se">\&quot;</span><span class="s">%1</span><span class="se">\&quot;</span><span class="s">, token=</span><span class="se">\&quot;</span><span class="s">%2</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">)</span>
+<a name="line-373"></a> <span class="p">.</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">AUTH_REALM</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">token</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">());</span>
+<a name="line-374"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Slug&quot;</span><span class="p">,</span> <span class="n">QUrl</span><span class="o">::</span><span class="n">toPercentEncoding</span><span class="p">(</span><span class="n">photo</span><span class="p">.</span><span class="n">title</span><span class="p">())</span> <span class="o">+</span> <span class="s">&quot;.jpg&quot;</span><span class="p">);</span>
+<a name="line-375"></a>
+<a name="line-376"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">imageFile</span><span class="p">.</span><span class="n">readAll</span><span class="p">());</span>
+<a name="line-377"></a>
+<a name="line-378"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-379"></a> <span class="n">imageFile</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
+<a name="line-380"></a><span class="p">}</span>
<a name="line-381"></a>
-<a name="line-382"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-383"></a> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">deleteLater</span><span class="p">();</span>
-<a name="line-384"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-385"></a> <span class="p">}</span>
-<a name="line-386"></a>
-<a name="line-387"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">readAll</span><span class="p">());</span>
+<a name="line-382"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">updatePhotoInfo</span><span class="p">(</span><span class="n">YFPhoto</span><span class="o">&amp;</span> <span class="n">photo</span><span class="p">)</span>
+<a name="line-383"></a><span class="p">{</span>
+<a name="line-384"></a> <span class="n">QDomDocument</span> <span class="n">doc</span><span class="p">;</span>
+<a name="line-385"></a> <span class="n">QDomProcessingInstruction</span> <span class="n">instr</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createProcessingInstruction</span><span class="p">(</span>
+<a name="line-386"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;xml&quot;</span><span class="p">),</span>
+<a name="line-387"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;version=&#39;1.0&#39; encoding=&#39;UTF-8&#39;&quot;</span><span class="p">));</span>
<a name="line-388"></a>
-<a name="line-389"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">state</span><span class="p">)</span>
-<a name="line-390"></a> <span class="p">{</span>
-<a name="line-391"></a> <span class="k">case</span> <span class="p">(</span><span class="n">GE_LOGIN</span><span class="p">)</span><span class="o">:</span>
-<a name="line-392"></a> <span class="n">parseResponseLogin</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">talker_buffer</span><span class="p">);</span>
-<a name="line-393"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-394"></a> <span class="k">case</span> <span class="p">(</span><span class="n">GE_GETVERSION</span><span class="p">)</span><span class="o">:</span>
-<a name="line-395"></a> <span class="n">parseResponseGetVersion</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">talker_buffer</span><span class="p">);</span>
-<a name="line-396"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-397"></a> <span class="k">case</span> <span class="p">(</span><span class="n">GE_LISTALBUMS</span><span class="p">)</span><span class="o">:</span>
-<a name="line-398"></a> <span class="n">parseResponseListAlbums</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">talker_buffer</span><span class="p">);</span>
-<a name="line-399"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-400"></a> <span class="k">case</span> <span class="p">(</span><span class="n">GE_CHECKPHOTOEXIST</span><span class="p">)</span><span class="o">:</span>
-<a name="line-401"></a> <span class="n">parseResponseDoesPhotoExist</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">talker_buffer</span><span class="p">);</span>
-<a name="line-402"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-403"></a> <span class="k">case</span> <span class="p">(</span><span class="n">GE_GETINFO</span><span class="p">)</span><span class="o">:</span>
-<a name="line-404"></a> <span class="n">parseResponseGetInfo</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">talker_buffer</span><span class="p">);</span>
-<a name="line-405"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-406"></a> <span class="k">case</span> <span class="p">(</span><span class="n">GE_SETINFO</span><span class="p">)</span><span class="o">:</span>
-<a name="line-407"></a> <span class="n">parseResponseSetInfo</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">talker_buffer</span><span class="p">);</span>
-<a name="line-408"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-409"></a> <span class="k">case</span> <span class="p">(</span><span class="n">GE_ADDPHOTOCHUNK</span><span class="p">)</span><span class="o">:</span>
-<a name="line-410"></a> <span class="c1">// Support for Web API &gt;= 2.4</span>
-<a name="line-411"></a> <span class="n">parseResponseAddPhotoChunk</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">talker_buffer</span><span class="p">);</span>
-<a name="line-412"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-413"></a> <span class="k">case</span> <span class="p">(</span><span class="n">GE_ADDPHOTOSUMMARY</span><span class="p">)</span><span class="o">:</span>
-<a name="line-414"></a> <span class="n">parseResponseAddPhotoSummary</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">talker_buffer</span><span class="p">);</span>
-<a name="line-415"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-416"></a> <span class="k">default</span><span class="o">:</span> <span class="c1">// GE_LOGOUT</span>
-<a name="line-417"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-418"></a> <span class="p">}</span>
-<a name="line-419"></a>
-<a name="line-420"></a> <span class="k">if</span> <span class="p">(</span><span class="n">state</span> <span class="o">==</span> <span class="n">GE_GETVERSION</span> <span class="o">&amp;&amp;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">loggedIn</span><span class="p">)</span>
-<a name="line-421"></a> <span class="p">{</span>
-<a name="line-422"></a> <span class="n">listAlbums</span><span class="p">();</span>
-<a name="line-423"></a> <span class="p">}</span>
-<a name="line-424"></a>
-<a name="line-425"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-426"></a> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">deleteLater</span><span class="p">();</span>
-<a name="line-427"></a><span class="p">}</span>
-<a name="line-428"></a>
-<a name="line-429"></a><span class="kt">void</span> <span class="n">PiwigoTalker</span><span class="o">::</span><span class="n">parseResponseLogin</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
-<a name="line-430"></a><span class="p">{</span>
-<a name="line-431"></a> <span class="n">QXmlStreamReader</span> <span class="n">ts</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
-<a name="line-432"></a> <span class="n">QString</span> <span class="n">line</span><span class="p">;</span>
-<a name="line-433"></a> <span class="kt">bool</span> <span class="n">foundResponse</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-434"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">loggedIn</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-435"></a>
-<a name="line-436"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;parseResponseLogin: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
-<a name="line-437"></a>
-<a name="line-438"></a> <span class="k">while</span> <span class="p">(</span><span class="o">!</span><span class="n">ts</span><span class="p">.</span><span class="n">atEnd</span><span class="p">())</span>
-<a name="line-439"></a> <span class="p">{</span>
-<a name="line-440"></a> <span class="n">ts</span><span class="p">.</span><span class="n">readNext</span><span class="p">();</span>
-<a name="line-441"></a>
-<a name="line-442"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">isStartElement</span><span class="p">())</span>
-<a name="line-443"></a> <span class="p">{</span>
-<a name="line-444"></a> <span class="n">foundResponse</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-389"></a> <span class="n">doc</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">instr</span><span class="p">);</span>
+<a name="line-390"></a> <span class="n">QDomElement</span> <span class="n">entryElem</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;entry&quot;</span><span class="p">));</span>
+<a name="line-391"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;xmlns&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;http://www.w3.org/2005/Atom&quot;</span><span class="p">));</span>
+<a name="line-392"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;xmlns:f&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yandex:fotki&quot;</span><span class="p">));</span>
+<a name="line-393"></a> <span class="n">doc</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">entryElem</span><span class="p">);</span>
+<a name="line-394"></a>
+<a name="line-395"></a> <span class="n">QDomElement</span> <span class="n">urn</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;urn&quot;</span><span class="p">));</span>
+<a name="line-396"></a> <span class="n">urn</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">doc</span><span class="p">.</span><span class="n">createTextNode</span><span class="p">(</span><span class="n">photo</span><span class="p">.</span><span class="n">urn</span><span class="p">()));</span>
+<a name="line-397"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">urn</span><span class="p">);</span>
+<a name="line-398"></a>
+<a name="line-399"></a> <span class="n">QDomElement</span> <span class="n">title</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;title&quot;</span><span class="p">));</span>
+<a name="line-400"></a> <span class="n">title</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">doc</span><span class="p">.</span><span class="n">createTextNode</span><span class="p">(</span><span class="n">photo</span><span class="p">.</span><span class="n">title</span><span class="p">()));</span>
+<a name="line-401"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">title</span><span class="p">);</span>
+<a name="line-402"></a>
+<a name="line-403"></a> <span class="n">QDomElement</span> <span class="n">linkAlbum</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;link&quot;</span><span class="p">));</span>
+<a name="line-404"></a> <span class="n">linkAlbum</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">),</span> <span class="n">photo</span><span class="p">.</span><span class="n">m_apiAlbumUrl</span><span class="p">);</span>
+<a name="line-405"></a> <span class="n">linkAlbum</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rel&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;album&quot;</span><span class="p">));</span>
+<a name="line-406"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">linkAlbum</span><span class="p">);</span>
+<a name="line-407"></a>
+<a name="line-408"></a> <span class="n">QDomElement</span> <span class="n">summary</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;summary&quot;</span><span class="p">));</span>
+<a name="line-409"></a> <span class="n">summary</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">doc</span><span class="p">.</span><span class="n">createTextNode</span><span class="p">(</span><span class="n">photo</span><span class="p">.</span><span class="n">summary</span><span class="p">()));</span>
+<a name="line-410"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">summary</span><span class="p">);</span>
+<a name="line-411"></a>
+<a name="line-412"></a> <span class="n">QDomElement</span> <span class="n">adult</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;f:xxx&quot;</span><span class="p">));</span>
+<a name="line-413"></a> <span class="n">adult</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;value&quot;</span><span class="p">),</span> <span class="n">photo</span><span class="p">.</span><span class="n">isAdult</span><span class="p">()</span> <span class="o">?</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;true&quot;</span><span class="p">)</span> <span class="o">:</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;false&quot;</span><span class="p">));</span>
+<a name="line-414"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">adult</span><span class="p">);</span>
+<a name="line-415"></a>
+<a name="line-416"></a> <span class="n">QDomElement</span> <span class="n">hideOriginal</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;f:hide_original&quot;</span><span class="p">));</span>
+<a name="line-417"></a> <span class="n">hideOriginal</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;value&quot;</span><span class="p">),</span>
+<a name="line-418"></a> <span class="n">photo</span><span class="p">.</span><span class="n">isHideOriginal</span><span class="p">()</span> <span class="o">?</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;true&quot;</span><span class="p">)</span> <span class="o">:</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;false&quot;</span><span class="p">));</span>
+<a name="line-419"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">hideOriginal</span><span class="p">);</span>
+<a name="line-420"></a>
+<a name="line-421"></a> <span class="n">QDomElement</span> <span class="n">disableComments</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;f:disable_comments&quot;</span><span class="p">));</span>
+<a name="line-422"></a> <span class="n">disableComments</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;value&quot;</span><span class="p">),</span>
+<a name="line-423"></a> <span class="n">photo</span><span class="p">.</span><span class="n">isDisableComments</span><span class="p">()</span> <span class="o">?</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;true&quot;</span><span class="p">)</span> <span class="o">:</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;false&quot;</span><span class="p">));</span>
+<a name="line-424"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">disableComments</span><span class="p">);</span>
+<a name="line-425"></a>
+<a name="line-426"></a> <span class="n">QDomElement</span> <span class="n">access</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;f:access&quot;</span><span class="p">));</span>
+<a name="line-427"></a> <span class="n">access</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;value&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">ACCESS_STRINGS</span><span class="p">[</span><span class="n">photo</span><span class="p">.</span><span class="n">access</span><span class="p">()]);</span>
+<a name="line-428"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">access</span><span class="p">);</span>
+<a name="line-429"></a>
+<a name="line-430"></a> <span class="c1">// FIXME: undocumented API</span>
+<a name="line-431"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">t</span><span class="p">,</span> <span class="n">photo</span><span class="p">.</span><span class="n">tags</span><span class="p">)</span>
+<a name="line-432"></a> <span class="p">{</span>
+<a name="line-433"></a> <span class="n">QDomElement</span> <span class="n">tag</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;category&quot;</span><span class="p">));</span>
+<a name="line-434"></a> <span class="n">tag</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;scheme&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">apiTagsUrl</span><span class="p">);</span>
+<a name="line-435"></a> <span class="n">tag</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;term&quot;</span><span class="p">),</span> <span class="n">t</span><span class="p">);</span>
+<a name="line-436"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>
+<a name="line-437"></a> <span class="p">}</span>
+<a name="line-438"></a>
+<a name="line-439"></a> <span class="n">QByteArray</span> <span class="n">buffer</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">toString</span><span class="p">(</span><span class="mi">1</span><span class="p">).</span><span class="n">toUtf8</span><span class="p">();</span> <span class="c1">// with idents</span>
+<a name="line-440"></a>
+<a name="line-441"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Prepared data: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">buffer</span><span class="p">;</span>
+<a name="line-442"></a>
+<a name="line-443"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">lastPhoto</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">photo</span><span class="p">;</span>
+<a name="line-444"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_UPDATEPHOTO_INFO</span><span class="p">;</span>
<a name="line-445"></a>
-<a name="line-446"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rsp&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
-<a name="line-447"></a> <span class="n">ts</span><span class="p">.</span><span class="n">attributes</span><span class="p">().</span><span class="n">value</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;stat&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;ok&quot;</span><span class="p">))</span>
-<a name="line-448"></a> <span class="p">{</span>
-<a name="line-449"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">loggedIn</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-450"></a>
-<a name="line-451"></a> <span class="cm">/** Request Version */</span>
-<a name="line-452"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">GE_GETVERSION</span><span class="p">;</span>
-<a name="line-453"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker_buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-454"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">version</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+<a name="line-446"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">photo</span><span class="p">.</span><span class="n">m_apiEditUrl</span><span class="p">);</span>
+<a name="line-447"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+<a name="line-448"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span>
+<a name="line-449"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/atom+xml; charset=utf-8; type=entry&quot;</span><span class="p">));</span>
+<a name="line-450"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span>
+<a name="line-451"></a> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;FimpToken realm=</span><span class="se">\&quot;</span><span class="s">%1</span><span class="se">\&quot;</span><span class="s">, token=</span><span class="se">\&quot;</span><span class="s">%2</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">)</span>
+<a name="line-452"></a> <span class="p">.</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">AUTH_REALM</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">token</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">());</span>
+<a name="line-453"></a>
+<a name="line-454"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">put</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">buffer</span><span class="p">);</span>
<a name="line-455"></a>
-<a name="line-456"></a> <span class="n">QByteArray</span> <span class="n">buffer</span> <span class="o">=</span> <span class="s">&quot;method=pwg.getVersion&quot;</span><span class="p">;</span>
-<a name="line-457"></a>
-<a name="line-458"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">url</span><span class="p">);</span>
-<a name="line-459"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/x-www-form-urlencoded&quot;</span><span class="p">));</span>
-<a name="line-460"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">s_authToken</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">());</span>
-<a name="line-461"></a>
-<a name="line-462"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">buffer</span><span class="p">);</span>
+<a name="line-456"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-457"></a><span class="p">}</span>
+<a name="line-458"></a>
+<a name="line-459"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">updateAlbum</span><span class="p">(</span><span class="n">YandexFotkiAlbum</span><span class="o">&amp;</span> <span class="n">album</span><span class="p">)</span>
+<a name="line-460"></a><span class="p">{</span>
+<a name="line-461"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isErrorState</span><span class="p">()</span> <span class="o">||</span> <span class="o">!</span><span class="n">isAuthenticated</span><span class="p">())</span>
+<a name="line-462"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-463"></a>
-<a name="line-464"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-465"></a>
-<a name="line-466"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-467"></a> <span class="p">}</span>
-<a name="line-468"></a> <span class="p">}</span>
-<a name="line-469"></a> <span class="p">}</span>
-<a name="line-470"></a>
-<a name="line-471"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">foundResponse</span><span class="p">)</span>
-<a name="line-472"></a> <span class="p">{</span>
-<a name="line-473"></a> <span class="n">emit</span> <span class="n">signalLoginFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Piwigo URL probably incorrect&quot;</span><span class="p">));</span>
-<a name="line-474"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-475"></a> <span class="p">}</span>
-<a name="line-476"></a>
-<a name="line-477"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">loggedIn</span><span class="p">)</span>
-<a name="line-478"></a> <span class="p">{</span>
-<a name="line-479"></a> <span class="n">emit</span> <span class="n">signalLoginFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Incorrect username or password specified&quot;</span><span class="p">));</span>
-<a name="line-480"></a> <span class="p">}</span>
-<a name="line-481"></a><span class="p">}</span>
-<a name="line-482"></a>
-<a name="line-483"></a><span class="kt">void</span> <span class="n">PiwigoTalker</span><span class="o">::</span><span class="n">parseResponseGetVersion</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
-<a name="line-484"></a><span class="p">{</span>
-<a name="line-485"></a> <span class="n">QXmlStreamReader</span> <span class="n">ts</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
-<a name="line-486"></a> <span class="n">QString</span> <span class="n">line</span><span class="p">;</span>
-<a name="line-487"></a> <span class="n">QRegExp</span> <span class="nf">verrx</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;.?(</span><span class="se">\\</span><span class="s">d+)</span><span class="err">\\</span><span class="p">.(</span><span class="err">\\</span><span class="n">d</span><span class="o">+</span><span class="p">).</span><span class="o">*</span><span class="s">&quot;))</span><span class="p">;</span>
-<a name="line-488"></a>
-<a name="line-489"></a> <span class="kt">bool</span> <span class="n">foundResponse</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-490"></a>
-<a name="line-491"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;parseResponseGetVersion: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
-<a name="line-492"></a>
-<a name="line-493"></a> <span class="k">while</span> <span class="p">(</span><span class="o">!</span><span class="n">ts</span><span class="p">.</span><span class="n">atEnd</span><span class="p">())</span>
-<a name="line-494"></a> <span class="p">{</span>
-<a name="line-495"></a> <span class="n">ts</span><span class="p">.</span><span class="n">readNext</span><span class="p">();</span>
-<a name="line-496"></a>
-<a name="line-497"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">isStartElement</span><span class="p">())</span>
-<a name="line-498"></a> <span class="p">{</span>
-<a name="line-499"></a> <span class="n">foundResponse</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-500"></a>
-<a name="line-501"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rsp&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
-<a name="line-502"></a> <span class="n">ts</span><span class="p">.</span><span class="n">attributes</span><span class="p">().</span><span class="n">value</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;stat&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;ok&quot;</span><span class="p">))</span>
-<a name="line-503"></a> <span class="p">{</span>
-<a name="line-504"></a> <span class="n">QString</span> <span class="n">v</span> <span class="o">=</span> <span class="n">ts</span><span class="p">.</span><span class="n">readElementText</span><span class="p">();</span>
+<a name="line-464"></a> <span class="k">if</span> <span class="p">(</span><span class="n">album</span><span class="p">.</span><span class="n">urn</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-465"></a> <span class="p">{</span>
+<a name="line-466"></a> <span class="c1">// new album</span>
+<a name="line-467"></a> <span class="k">return</span> <span class="n">updateAlbumCreate</span><span class="p">(</span><span class="n">album</span><span class="p">);</span>
+<a name="line-468"></a> <span class="p">}</span>
+<a name="line-469"></a> <span class="k">else</span>
+<a name="line-470"></a> <span class="p">{</span>
+<a name="line-471"></a> <span class="n">qCCritical</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Updating albums is not yet supported&quot;</span><span class="p">;</span>
+<a name="line-472"></a> <span class="p">}</span>
+<a name="line-473"></a><span class="p">}</span>
+<a name="line-474"></a>
+<a name="line-475"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">updateAlbumCreate</span><span class="p">(</span><span class="n">YandexFotkiAlbum</span><span class="o">&amp;</span> <span class="n">album</span><span class="p">)</span>
+<a name="line-476"></a><span class="p">{</span>
+<a name="line-477"></a> <span class="n">QDomDocument</span> <span class="n">doc</span><span class="p">;</span>
+<a name="line-478"></a> <span class="n">QDomProcessingInstruction</span> <span class="n">instr</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createProcessingInstruction</span><span class="p">(</span>
+<a name="line-479"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;xml&quot;</span><span class="p">),</span>
+<a name="line-480"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;version=&#39;1.0&#39; encoding=&#39;UTF-8&#39;&quot;</span><span class="p">));</span>
+<a name="line-481"></a>
+<a name="line-482"></a> <span class="n">doc</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">instr</span><span class="p">);</span>
+<a name="line-483"></a> <span class="n">QDomElement</span> <span class="n">entryElem</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;entry&quot;</span><span class="p">));</span>
+<a name="line-484"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;xmlns&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;http://www.w3.org/2005/Atom&quot;</span><span class="p">));</span>
+<a name="line-485"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;xmlns:f&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yandex:fotki&quot;</span><span class="p">));</span>
+<a name="line-486"></a> <span class="n">doc</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">entryElem</span><span class="p">);</span>
+<a name="line-487"></a>
+<a name="line-488"></a> <span class="n">QDomElement</span> <span class="n">title</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;title&quot;</span><span class="p">));</span>
+<a name="line-489"></a> <span class="n">title</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">doc</span><span class="p">.</span><span class="n">createTextNode</span><span class="p">(</span><span class="n">album</span><span class="p">.</span><span class="n">title</span><span class="p">()));</span>
+<a name="line-490"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">title</span><span class="p">);</span>
+<a name="line-491"></a>
+<a name="line-492"></a> <span class="n">QDomElement</span> <span class="n">summary</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;summary&quot;</span><span class="p">));</span>
+<a name="line-493"></a> <span class="n">summary</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">doc</span><span class="p">.</span><span class="n">createTextNode</span><span class="p">(</span><span class="n">album</span><span class="p">.</span><span class="n">summary</span><span class="p">()));</span>
+<a name="line-494"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">summary</span><span class="p">);</span>
+<a name="line-495"></a>
+<a name="line-496"></a> <span class="n">QDomElement</span> <span class="n">password</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;f:password&quot;</span><span class="p">));</span>
+<a name="line-497"></a> <span class="n">password</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">doc</span><span class="p">.</span><span class="n">createTextNode</span><span class="p">(</span><span class="n">album</span><span class="p">.</span><span class="n">m_password</span><span class="p">));</span>
+<a name="line-498"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">password</span><span class="p">);</span>
+<a name="line-499"></a>
+<a name="line-500"></a> <span class="k">const</span> <span class="n">QByteArray</span> <span class="n">postData</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">toString</span><span class="p">(</span><span class="mi">1</span><span class="p">).</span><span class="n">toUtf8</span><span class="p">();</span> <span class="c1">// with idents</span>
+<a name="line-501"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Prepared data: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">postData</span><span class="p">;</span>
+<a name="line-502"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Url&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">apiAlbumsUrl</span><span class="p">;</span>
+<a name="line-503"></a>
+<a name="line-504"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_UPDATEALBUM</span><span class="p">;</span>
<a name="line-505"></a>
-<a name="line-506"></a> <span class="k">if</span> <span class="p">(</span><span class="n">verrx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">v</span><span class="p">))</span>
-<a name="line-507"></a> <span class="p">{</span>
-<a name="line-508"></a> <span class="n">QStringList</span> <span class="n">qsl</span> <span class="o">=</span> <span class="n">verrx</span><span class="p">.</span><span class="n">capturedTexts</span><span class="p">();</span>
-<a name="line-509"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">version</span> <span class="o">=</span> <span class="n">qsl</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">toInt</span><span class="p">()</span> <span class="o">*</span> <span class="mi">100</span> <span class="o">+</span> <span class="n">qsl</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">toInt</span><span class="p">();</span>
-<a name="line-510"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Version: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">version</span><span class="p">;</span>
-<a name="line-511"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-512"></a> <span class="p">}</span>
-<a name="line-513"></a> <span class="p">}</span>
-<a name="line-514"></a> <span class="p">}</span>
-<a name="line-515"></a> <span class="p">}</span>
+<a name="line-506"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">apiAlbumsUrl</span><span class="p">);</span>
+<a name="line-507"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+<a name="line-508"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/atom+xml; charset=utf-8; type=entry&quot;</span><span class="p">));</span>
+<a name="line-509"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;FimpToken realm=</span><span class="se">\&quot;</span><span class="s">%1</span><span class="se">\&quot;</span><span class="s">, token=</span><span class="se">\&quot;</span><span class="s">%2</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">)</span>
+<a name="line-510"></a> <span class="p">.</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">AUTH_REALM</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">token</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">());</span>
+<a name="line-511"></a>
+<a name="line-512"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">postData</span><span class="p">);</span>
+<a name="line-513"></a>
+<a name="line-514"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-515"></a><span class="p">}</span>
<a name="line-516"></a>
-<a name="line-517"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;foundResponse : &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">foundResponse</span><span class="p">;</span>
-<a name="line-518"></a>
-<a name="line-519"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">version</span> <span class="o">&lt;</span> <span class="n">PIWIGO_VER_2_4</span><span class="p">)</span>
+<a name="line-517"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">reset</span><span class="p">()</span>
+<a name="line-518"></a><span class="p">{</span>
+<a name="line-519"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
<a name="line-520"></a> <span class="p">{</span>
-<a name="line-521"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">loggedIn</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-522"></a> <span class="n">emit</span> <span class="nf">signalLoginFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Upload to Piwigo version &lt; 2.4 is no longer supported&quot;</span><span class="p">));</span>
-<a name="line-523"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-524"></a> <span class="p">}</span>
-<a name="line-525"></a><span class="p">}</span>
-<a name="line-526"></a>
-<a name="line-527"></a><span class="kt">void</span> <span class="n">PiwigoTalker</span><span class="o">::</span><span class="n">parseResponseListAlbums</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
-<a name="line-528"></a><span class="p">{</span>
-<a name="line-529"></a> <span class="n">QString</span> <span class="n">str</span> <span class="o">=</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
-<a name="line-530"></a> <span class="n">QXmlStreamReader</span> <span class="nf">ts</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
-<a name="line-531"></a> <span class="n">QString</span> <span class="n">line</span><span class="p">;</span>
-<a name="line-532"></a> <span class="kt">bool</span> <span class="n">foundResponse</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-533"></a> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-534"></a>
-<a name="line-535"></a> <span class="k">typedef</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">PiwigoAlbum</span><span class="o">&gt;</span> <span class="n">PiwigoAlbumList</span><span class="p">;</span>
-<a name="line-536"></a> <span class="n">PiwigoAlbumList</span> <span class="n">albumList</span><span class="p">;</span>
-<a name="line-537"></a> <span class="n">PiwigoAlbumList</span><span class="o">::</span><span class="n">iterator</span> <span class="n">iter</span> <span class="o">=</span> <span class="n">albumList</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
-<a name="line-538"></a>
-<a name="line-539"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;parseResponseListAlbums&quot;</span><span class="p">;</span>
-<a name="line-540"></a>
-<a name="line-541"></a> <span class="k">while</span> <span class="p">(</span><span class="o">!</span><span class="n">ts</span><span class="p">.</span><span class="n">atEnd</span><span class="p">())</span>
+<a name="line-521"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">abort</span><span class="p">();</span>
+<a name="line-522"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-523"></a> <span class="p">}</span>
+<a name="line-524"></a>
+<a name="line-525"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">token</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
+<a name="line-526"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_UNAUTHENTICATED</span><span class="p">;</span>
+<a name="line-527"></a><span class="p">}</span>
+<a name="line-528"></a>
+<a name="line-529"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">cancel</span><span class="p">()</span>
+<a name="line-530"></a><span class="p">{</span>
+<a name="line-531"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
+<a name="line-532"></a> <span class="p">{</span>
+<a name="line-533"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">abort</span><span class="p">();</span>
+<a name="line-534"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-535"></a> <span class="p">}</span>
+<a name="line-536"></a>
+<a name="line-537"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isAuthenticated</span><span class="p">())</span>
+<a name="line-538"></a> <span class="p">{</span>
+<a name="line-539"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_AUTHENTICATED</span><span class="p">;</span>
+<a name="line-540"></a> <span class="p">}</span>
+<a name="line-541"></a> <span class="k">else</span>
<a name="line-542"></a> <span class="p">{</span>
-<a name="line-543"></a> <span class="n">ts</span><span class="p">.</span><span class="n">readNext</span><span class="p">();</span>
-<a name="line-544"></a>
-<a name="line-545"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">isEndElement</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">ts</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;categories&quot;</span><span class="p">))</span>
-<a name="line-546"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-543"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">token</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
+<a name="line-544"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_UNAUTHENTICATED</span><span class="p">;</span>
+<a name="line-545"></a> <span class="p">}</span>
+<a name="line-546"></a><span class="p">}</span>
<a name="line-547"></a>
-<a name="line-548"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">isStartElement</span><span class="p">())</span>
-<a name="line-549"></a> <span class="p">{</span>
-<a name="line-550"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rsp&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
-<a name="line-551"></a> <span class="n">ts</span><span class="p">.</span><span class="n">attributes</span><span class="p">().</span><span class="n">value</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;stat&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;ok&quot;</span><span class="p">))</span>
-<a name="line-552"></a> <span class="p">{</span>
-<a name="line-553"></a> <span class="n">foundResponse</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-554"></a> <span class="p">}</span>
-<a name="line-555"></a>
-<a name="line-556"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;categories&quot;</span><span class="p">))</span>
-<a name="line-557"></a> <span class="p">{</span>
-<a name="line-558"></a> <span class="n">success</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-559"></a> <span class="p">}</span>
+<a name="line-548"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">setErrorState</span><span class="p">(</span><span class="n">State</span> <span class="n">state</span><span class="p">)</span>
+<a name="line-549"></a><span class="p">{</span>
+<a name="line-550"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">state</span><span class="p">;</span>
+<a name="line-551"></a> <span class="n">emit</span> <span class="nf">signalError</span><span class="p">();</span>
+<a name="line-552"></a><span class="p">}</span>
+<a name="line-553"></a>
+<a name="line-554"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">slotFinished</span><span class="p">(</span><span class="n">QNetworkReply</span><span class="o">*</span> <span class="n">reply</span><span class="p">)</span>
+<a name="line-555"></a><span class="p">{</span>
+<a name="line-556"></a> <span class="k">if</span> <span class="p">(</span><span class="n">reply</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
+<a name="line-557"></a> <span class="p">{</span>
+<a name="line-558"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-559"></a> <span class="p">}</span>
<a name="line-560"></a>
-<a name="line-561"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;category&quot;</span><span class="p">))</span>
-<a name="line-562"></a> <span class="p">{</span>
-<a name="line-563"></a> <span class="n">PiwigoAlbum</span> <span class="n">album</span><span class="p">;</span>
-<a name="line-564"></a> <span class="n">album</span><span class="p">.</span><span class="n">m_refNum</span> <span class="o">=</span> <span class="n">ts</span><span class="p">.</span><span class="n">attributes</span><span class="p">().</span><span class="n">value</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;id&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">().</span><span class="n">toInt</span><span class="p">();</span>
-<a name="line-565"></a> <span class="n">album</span><span class="p">.</span><span class="n">m_parentRefNum</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
-<a name="line-566"></a>
-<a name="line-567"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">album</span><span class="p">.</span><span class="n">m_refNum</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span>
-<a name="line-568"></a>
-<a name="line-569"></a> <span class="n">iter</span> <span class="o">=</span> <span class="n">albumList</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">iter</span><span class="p">,</span> <span class="n">album</span><span class="p">);</span>
-<a name="line-570"></a> <span class="p">}</span>
-<a name="line-571"></a>
-<a name="line-572"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;name&quot;</span><span class="p">))</span>
-<a name="line-573"></a> <span class="p">{</span>
-<a name="line-574"></a> <span class="p">(</span><span class="o">*</span><span class="n">iter</span><span class="p">).</span><span class="n">m_name</span> <span class="o">=</span> <span class="n">ts</span><span class="p">.</span><span class="n">readElementText</span><span class="p">();</span>
-<a name="line-575"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="o">*</span><span class="n">iter</span><span class="p">).</span><span class="n">m_name</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span>
-<a name="line-576"></a> <span class="p">}</span>
-<a name="line-577"></a>
-<a name="line-578"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;uppercats&quot;</span><span class="p">))</span>
-<a name="line-579"></a> <span class="p">{</span>
-<a name="line-580"></a> <span class="n">QString</span> <span class="n">uppercats</span> <span class="o">=</span> <span class="n">ts</span><span class="p">.</span><span class="n">readElementText</span><span class="p">();</span>
-<a name="line-581"></a> <span class="n">QStringList</span> <span class="n">catlist</span> <span class="o">=</span> <span class="n">uppercats</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;,&#39;</span><span class="p">));</span>
-<a name="line-582"></a>
-<a name="line-583"></a> <span class="k">if</span> <span class="p">(</span><span class="n">catlist</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="o">&amp;&amp;</span> <span class="n">catlist</span><span class="p">.</span><span class="n">at</span><span class="p">((</span><span class="n">uint</span><span class="p">)</span><span class="n">catlist</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">-</span> <span class="mi">2</span><span class="p">).</span><span class="n">toInt</span><span class="p">()</span> <span class="o">!=</span> <span class="p">(</span><span class="o">*</span><span class="n">iter</span><span class="p">).</span><span class="n">m_refNum</span><span class="p">)</span>
-<a name="line-584"></a> <span class="p">{</span>
-<a name="line-585"></a> <span class="p">(</span><span class="o">*</span><span class="n">iter</span><span class="p">).</span><span class="n">m_parentRefNum</span> <span class="o">=</span> <span class="n">catlist</span><span class="p">.</span><span class="n">at</span><span class="p">((</span><span class="n">uint</span><span class="p">)</span><span class="n">catlist</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">-</span> <span class="mi">2</span><span class="p">).</span><span class="n">toInt</span><span class="p">();</span>
-<a name="line-586"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="o">*</span><span class="n">iter</span><span class="p">).</span><span class="n">m_parentRefNum</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span>
-<a name="line-587"></a> <span class="p">}</span>
-<a name="line-588"></a> <span class="p">}</span>
-<a name="line-589"></a> <span class="p">}</span>
-<a name="line-590"></a> <span class="p">}</span>
-<a name="line-591"></a>
-<a name="line-592"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">foundResponse</span><span class="p">)</span>
-<a name="line-593"></a> <span class="p">{</span>
-<a name="line-594"></a> <span class="n">emit</span> <span class="n">signalError</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Invalid response received from remote Piwigo&quot;</span><span class="p">));</span>
-<a name="line-595"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-596"></a> <span class="p">}</span>
-<a name="line-597"></a>
-<a name="line-598"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">success</span><span class="p">)</span>
-<a name="line-599"></a> <span class="p">{</span>
-<a name="line-600"></a> <span class="n">emit</span> <span class="n">signalError</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to list albums&quot;</span><span class="p">));</span>
-<a name="line-601"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-602"></a> <span class="p">}</span>
-<a name="line-603"></a>
-<a name="line-604"></a> <span class="c1">// We need parent albums to come first for rest of the code to work</span>
-<a name="line-605"></a> <span class="n">std</span><span class="o">::</span><span class="n">sort</span><span class="p">(</span><span class="n">albumList</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span> <span class="n">albumList</span><span class="p">.</span><span class="n">end</span><span class="p">());</span>
-<a name="line-606"></a>
-<a name="line-607"></a> <span class="n">emit</span> <span class="nf">signalAlbums</span><span class="p">(</span><span class="n">albumList</span><span class="p">);</span>
-<a name="line-608"></a><span class="p">}</span>
-<a name="line-609"></a>
-<a name="line-610"></a><span class="kt">void</span> <span class="n">PiwigoTalker</span><span class="o">::</span><span class="n">parseResponseDoesPhotoExist</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
-<a name="line-611"></a><span class="p">{</span>
-<a name="line-612"></a> <span class="n">QString</span> <span class="n">str</span> <span class="o">=</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
-<a name="line-613"></a> <span class="n">QXmlStreamReader</span> <span class="nf">ts</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
-<a name="line-614"></a> <span class="n">QString</span> <span class="n">line</span><span class="p">;</span>
-<a name="line-615"></a> <span class="kt">bool</span> <span class="n">foundResponse</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-616"></a> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-617"></a>
-<a name="line-618"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;parseResponseDoesPhotoExist: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
-<a name="line-619"></a>
-<a name="line-620"></a> <span class="k">while</span> <span class="p">(</span><span class="o">!</span><span class="n">ts</span><span class="p">.</span><span class="n">atEnd</span><span class="p">())</span>
-<a name="line-621"></a> <span class="p">{</span>
-<a name="line-622"></a> <span class="n">ts</span><span class="p">.</span><span class="n">readNext</span><span class="p">();</span>
-<a name="line-623"></a>
-<a name="line-624"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rsp&quot;</span><span class="p">))</span>
-<a name="line-625"></a> <span class="p">{</span>
-<a name="line-626"></a> <span class="n">foundResponse</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-627"></a>
-<a name="line-628"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">attributes</span><span class="p">().</span><span class="n">value</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;stat&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;ok&quot;</span><span class="p">))</span>
-<a name="line-629"></a> <span class="n">success</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-630"></a>
-<a name="line-631"></a> <span class="c1">// Originally, first versions of Piwigo 2.4.x returned an invalid XML as the element started with a digit</span>
-<a name="line-632"></a> <span class="c1">// New versions are corrected (starting with _) : This code works with both versions</span>
-<a name="line-633"></a> <span class="n">QRegExp</span> <span class="nf">md5rx</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;_?([a-f0-9]+)</span><span class="o">&gt;</span><span class="p">([</span><span class="mi">0</span><span class="o">-</span><span class="mi">9</span><span class="p">]</span><span class="o">+</span><span class="p">)</span><span class="o">&lt;/</span><span class="p">.</span><span class="o">+</span><span class="s">&quot;))</span><span class="p">;</span>
-<a name="line-634"></a>
-<a name="line-635"></a> <span class="n">ts</span><span class="p">.</span><span class="n">readNext</span><span class="p">();</span>
-<a name="line-636"></a>
-<a name="line-637"></a> <span class="k">if</span> <span class="p">(</span><span class="n">md5rx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">mid</span><span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">characterOffset</span><span class="p">()))))</span>
-<a name="line-638"></a> <span class="p">{</span>
-<a name="line-639"></a><span class="hll"> <span class="n">QStringList</span> <span class="n">qsl</span> <span class="o">=</span> <span class="n">md5rx</span><span class="p">.</span><span class="n">capturedTexts</span><span class="p">();</span><span class='error2'>&lt;--- Shadowed declaration</span>
-</span><a name="line-640"></a>
-<a name="line-641"></a> <span class="k">if</span> <span class="p">(</span><span class="n">qsl</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">md5sum</span><span class="p">.</span><span class="n">toHex</span><span class="p">()))</span>
-<a name="line-642"></a> <span class="p">{</span>
-<a name="line-643"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photoId</span> <span class="o">=</span> <span class="n">qsl</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">toInt</span><span class="p">();</span>
-<a name="line-644"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;d-&gt;photoId: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photoId</span><span class="p">;</span>
-<a name="line-645"></a>
-<a name="line-646"></a> <span class="n">emit</span> <span class="nf">signalProgressInfo</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Photo &#39;%1&#39; already exists.&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">title</span><span class="p">));</span>
+<a name="line-561"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-562"></a>
+<a name="line-563"></a> <span class="k">if</span> <span class="p">(</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">error</span><span class="p">()</span> <span class="o">!=</span> <span class="n">QNetworkReply</span><span class="o">::</span><span class="n">NoError</span><span class="p">)</span>
+<a name="line-564"></a> <span class="p">{</span>
+<a name="line-565"></a> <span class="kt">int</span> <span class="n">code</span> <span class="o">=</span> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">attribute</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">HttpStatusCodeAttribute</span><span class="p">).</span><span class="n">toInt</span><span class="p">();</span>
+<a name="line-566"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Transfer Error&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">code</span> <span class="o">&lt;&lt;</span> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">errorString</span><span class="p">();</span>
+<a name="line-567"></a>
+<a name="line-568"></a> <span class="k">if</span> <span class="p">(</span><span class="n">code</span> <span class="o">==</span> <span class="mi">401</span> <span class="o">||</span> <span class="n">code</span> <span class="o">==</span> <span class="mi">403</span> <span class="o">||</span> <span class="n">code</span> <span class="o">==</span> <span class="mi">404</span><span class="p">)</span> <span class="c1">// auth required, 404 user not found</span>
+<a name="line-569"></a> <span class="p">{</span>
+<a name="line-570"></a> <span class="n">setErrorState</span><span class="p">(</span><span class="n">STATE_INVALID_CREDENTIALS</span><span class="p">);</span>
+<a name="line-571"></a> <span class="p">}</span>
+<a name="line-572"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">==</span> <span class="n">STATE_GETSERVICE</span><span class="p">)</span>
+<a name="line-573"></a> <span class="p">{</span>
+<a name="line-574"></a> <span class="n">setErrorState</span><span class="p">(</span><span class="n">STATE_GETSERVICE_ERROR</span><span class="p">);</span>
+<a name="line-575"></a> <span class="p">}</span>
+<a name="line-576"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">==</span> <span class="n">STATE_GETSESSION</span><span class="p">)</span>
+<a name="line-577"></a> <span class="p">{</span>
+<a name="line-578"></a> <span class="n">setErrorState</span><span class="p">(</span><span class="n">STATE_GETSESSION_ERROR</span><span class="p">);</span>
+<a name="line-579"></a> <span class="p">}</span>
+<a name="line-580"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">==</span> <span class="n">STATE_GETTOKEN</span><span class="p">)</span>
+<a name="line-581"></a> <span class="p">{</span>
+<a name="line-582"></a> <span class="n">setErrorState</span><span class="p">(</span><span class="n">STATE_GETTOKEN_ERROR</span><span class="p">);</span>
+<a name="line-583"></a> <span class="p">}</span>
+<a name="line-584"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">==</span> <span class="n">STATE_LISTALBUMS</span><span class="p">)</span>
+<a name="line-585"></a> <span class="p">{</span>
+<a name="line-586"></a> <span class="n">setErrorState</span><span class="p">(</span><span class="n">STATE_LISTALBUMS_ERROR</span><span class="p">);</span>
+<a name="line-587"></a> <span class="p">}</span>
+<a name="line-588"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">==</span> <span class="n">STATE_LISTPHOTOS</span><span class="p">)</span>
+<a name="line-589"></a> <span class="p">{</span>
+<a name="line-590"></a> <span class="n">setErrorState</span><span class="p">(</span><span class="n">STATE_LISTPHOTOS_ERROR</span><span class="p">);</span>
+<a name="line-591"></a> <span class="p">}</span>
+<a name="line-592"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">==</span> <span class="n">STATE_UPDATEPHOTO_FILE</span><span class="p">)</span>
+<a name="line-593"></a> <span class="p">{</span>
+<a name="line-594"></a> <span class="n">setErrorState</span><span class="p">(</span><span class="n">STATE_UPDATEPHOTO_FILE_ERROR</span><span class="p">);</span>
+<a name="line-595"></a> <span class="p">}</span>
+<a name="line-596"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">==</span> <span class="n">STATE_UPDATEPHOTO_INFO</span><span class="p">)</span>
+<a name="line-597"></a> <span class="p">{</span>
+<a name="line-598"></a> <span class="n">setErrorState</span><span class="p">(</span><span class="n">STATE_UPDATEPHOTO_INFO_ERROR</span><span class="p">);</span>
+<a name="line-599"></a> <span class="p">}</span>
+<a name="line-600"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">==</span> <span class="n">STATE_UPDATEALBUM</span><span class="p">)</span>
+<a name="line-601"></a> <span class="p">{</span>
+<a name="line-602"></a> <span class="n">setErrorState</span><span class="p">(</span><span class="n">STATE_UPDATEALBUM_ERROR</span><span class="p">);</span>
+<a name="line-603"></a> <span class="p">}</span>
+<a name="line-604"></a>
+<a name="line-605"></a> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">deleteLater</span><span class="p">();</span>
+<a name="line-606"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-607"></a> <span class="p">}</span>
+<a name="line-608"></a>
+<a name="line-609"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">readAll</span><span class="p">());</span>
+<a name="line-610"></a>
+<a name="line-611"></a> <span class="k">switch</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span><span class="p">)</span>
+<a name="line-612"></a> <span class="p">{</span>
+<a name="line-613"></a> <span class="k">case</span> <span class="p">(</span><span class="n">STATE_GETSERVICE</span><span class="p">)</span><span class="o">:</span>
+<a name="line-614"></a> <span class="n">slotParseResponseGetService</span><span class="p">();</span>
+<a name="line-615"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-616"></a> <span class="k">case</span> <span class="p">(</span><span class="n">STATE_GETSESSION</span><span class="p">)</span><span class="o">:</span>
+<a name="line-617"></a> <span class="n">slotParseResponseGetSession</span><span class="p">();</span>
+<a name="line-618"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-619"></a> <span class="k">case</span> <span class="p">(</span><span class="n">STATE_GETTOKEN</span><span class="p">)</span><span class="o">:</span>
+<a name="line-620"></a> <span class="n">slotParseResponseGetToken</span><span class="p">();</span>
+<a name="line-621"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-622"></a> <span class="k">case</span> <span class="p">(</span><span class="n">STATE_LISTALBUMS</span><span class="p">)</span><span class="o">:</span>
+<a name="line-623"></a> <span class="n">slotParseResponseListAlbums</span><span class="p">();</span>
+<a name="line-624"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-625"></a> <span class="k">case</span> <span class="p">(</span><span class="n">STATE_LISTPHOTOS</span><span class="p">)</span><span class="o">:</span>
+<a name="line-626"></a> <span class="n">slotParseResponseListPhotos</span><span class="p">();</span>
+<a name="line-627"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-628"></a> <span class="k">case</span> <span class="p">(</span><span class="n">STATE_UPDATEPHOTO_FILE</span><span class="p">)</span><span class="o">:</span>
+<a name="line-629"></a> <span class="n">slotParseResponseUpdatePhotoFile</span><span class="p">();</span>
+<a name="line-630"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-631"></a> <span class="k">case</span> <span class="p">(</span><span class="n">STATE_UPDATEPHOTO_INFO</span><span class="p">)</span><span class="o">:</span>
+<a name="line-632"></a> <span class="n">slotParseResponseUpdatePhotoInfo</span><span class="p">();</span>
+<a name="line-633"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-634"></a> <span class="k">case</span> <span class="p">(</span><span class="n">STATE_UPDATEALBUM</span><span class="p">)</span><span class="o">:</span>
+<a name="line-635"></a> <span class="n">slotParseResponseUpdateAlbum</span><span class="p">();</span>
+<a name="line-636"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-637"></a> <span class="k">default</span><span class="o">:</span>
+<a name="line-638"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-639"></a> <span class="p">}</span>
+<a name="line-640"></a>
+<a name="line-641"></a> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">deleteLater</span><span class="p">();</span>
+<a name="line-642"></a><span class="p">}</span>
+<a name="line-643"></a>
+<a name="line-644"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">slotParseResponseGetService</span><span class="p">()</span>
+<a name="line-645"></a><span class="p">{</span>
+<a name="line-646"></a> <span class="n">QDomDocument</span> <span class="n">doc</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;service&quot;</span><span class="p">));</span>
<a name="line-647"></a>
-<a name="line-648"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">GE_GETINFO</span><span class="p">;</span>
-<a name="line-649"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker_buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-650"></a>
-<a name="line-651"></a><span class="hll"> <span class="n">QStringList</span> <span class="n">qsl</span><span class="p">;</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-652"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;method=pwg.images.getInfo&quot;</span><span class="p">));</span>
-<a name="line-653"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;image_id=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">photoId</span><span class="p">));</span>
-<a name="line-654"></a> <span class="n">QString</span> <span class="n">dataParameters</span> <span class="o">=</span> <span class="n">qsl</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;&amp;&#39;</span><span class="p">));</span>
-<a name="line-655"></a> <span class="n">QByteArray</span> <span class="n">buffer</span><span class="p">;</span>
-<a name="line-656"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">dataParameters</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">());</span>
+<a name="line-648"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">doc</span><span class="p">.</span><span class="n">setContent</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">))</span>
+<a name="line-649"></a> <span class="p">{</span>
+<a name="line-650"></a> <span class="n">qCCritical</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid XML: parse error&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">;</span>
+<a name="line-651"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_GETSERVICE_ERROR</span><span class="p">);</span>
+<a name="line-652"></a> <span class="p">}</span>
+<a name="line-653"></a>
+<a name="line-654"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">rootElem</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">documentElement</span><span class="p">();</span>
+<a name="line-655"></a>
+<a name="line-656"></a> <span class="n">QDomElement</span> <span class="n">workspaceElem</span> <span class="o">=</span> <span class="n">rootElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;app:workspace&quot;</span><span class="p">));</span>
<a name="line-657"></a>
-<a name="line-658"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">url</span><span class="p">);</span>
-<a name="line-659"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/x-www-form-urlencoded&quot;</span><span class="p">));</span>
-<a name="line-660"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">s_authToken</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">());</span>
-<a name="line-661"></a>
-<a name="line-662"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">buffer</span><span class="p">);</span>
-<a name="line-663"></a>
-<a name="line-664"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-665"></a> <span class="p">}</span>
-<a name="line-666"></a> <span class="p">}</span>
-<a name="line-667"></a> <span class="p">}</span>
-<a name="line-668"></a> <span class="p">}</span>
-<a name="line-669"></a>
-<a name="line-670"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">foundResponse</span><span class="p">)</span>
-<a name="line-671"></a> <span class="p">{</span>
-<a name="line-672"></a> <span class="n">emit</span> <span class="n">signalAddPhotoFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Invalid response received from remote Piwigo&quot;</span><span class="p">));</span>
-<a name="line-673"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-674"></a> <span class="p">}</span>
-<a name="line-675"></a>
-<a name="line-676"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">success</span><span class="p">)</span>
-<a name="line-677"></a> <span class="p">{</span>
-<a name="line-678"></a> <span class="n">emit</span> <span class="n">signalAddPhotoFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to upload photo&quot;</span><span class="p">));</span>
-<a name="line-679"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-680"></a> <span class="p">}</span>
-<a name="line-681"></a>
-<a name="line-682"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">version</span> <span class="o">&gt;=</span> <span class="n">PIWIGO_VER_2_4</span><span class="p">)</span>
-<a name="line-683"></a> <span class="p">{</span>
-<a name="line-684"></a> <span class="n">QFileInfo</span> <span class="n">fi</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">);</span>
-<a name="line-685"></a>
-<a name="line-686"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">GE_ADDPHOTOCHUNK</span><span class="p">;</span>
-<a name="line-687"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker_buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-688"></a> <span class="c1">// Compute the number of chunks for the image</span>
-<a name="line-689"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">nbOfChunks</span> <span class="o">=</span> <span class="p">(</span><span class="n">fi</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">/</span> <span class="n">CHUNK_MAX_SIZE</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-690"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">chunkId</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-691"></a>
-<a name="line-692"></a> <span class="n">addNextChunk</span><span class="p">();</span>
-<a name="line-693"></a> <span class="p">}</span>
-<a name="line-694"></a> <span class="k">else</span>
-<a name="line-695"></a> <span class="p">{</span>
-<a name="line-696"></a> <span class="n">emit</span> <span class="n">signalAddPhotoFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Upload to Piwigo version &lt; 2.4 is no longer supported&quot;</span><span class="p">));</span>
-<a name="line-697"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-698"></a> <span class="p">}</span>
-<a name="line-699"></a><span class="p">}</span>
-<a name="line-700"></a>
-<a name="line-701"></a><span class="kt">void</span> <span class="n">PiwigoTalker</span><span class="o">::</span><span class="n">parseResponseGetInfo</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
-<a name="line-702"></a><span class="p">{</span>
-<a name="line-703"></a> <span class="n">QString</span> <span class="n">str</span> <span class="o">=</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
-<a name="line-704"></a> <span class="n">QXmlStreamReader</span> <span class="nf">ts</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
-<a name="line-705"></a> <span class="n">QString</span> <span class="n">line</span><span class="p">;</span>
-<a name="line-706"></a> <span class="kt">bool</span> <span class="n">foundResponse</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-707"></a> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-708"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">categories</span><span class="p">;</span>
-<a name="line-709"></a>
-<a name="line-710"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;parseResponseGetInfo: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
+<a name="line-658"></a> <span class="c1">// FIXME: workaround for Yandex xml namespaces bugs</span>
+<a name="line-659"></a> <span class="n">QString</span> <span class="n">prefix</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;app:&quot;</span><span class="p">);</span>
+<a name="line-660"></a>
+<a name="line-661"></a> <span class="k">if</span> <span class="p">(</span><span class="n">workspaceElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
+<a name="line-662"></a> <span class="p">{</span>
+<a name="line-663"></a> <span class="n">workspaceElem</span> <span class="o">=</span> <span class="n">rootElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;workspace&quot;</span><span class="p">));</span>
+<a name="line-664"></a> <span class="n">prefix</span> <span class="o">=</span> <span class="n">QString</span><span class="p">();</span>
+<a name="line-665"></a> <span class="n">qCCritical</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Service document without namespaces found&quot;</span><span class="p">;</span>
+<a name="line-666"></a> <span class="p">}</span>
+<a name="line-667"></a>
+<a name="line-668"></a> <span class="k">if</span> <span class="p">(</span><span class="n">workspaceElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
+<a name="line-669"></a> <span class="p">{</span>
+<a name="line-670"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid XML data: workspace element&quot;</span><span class="p">;</span>
+<a name="line-671"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_GETSERVICE_ERROR</span><span class="p">);</span>
+<a name="line-672"></a> <span class="p">}</span>
+<a name="line-673"></a>
+<a name="line-674"></a> <span class="n">QString</span> <span class="n">apiAlbumsUrl</span><span class="p">;</span>
+<a name="line-675"></a> <span class="n">QString</span> <span class="n">apiPhotosUrl</span><span class="p">;</span>
+<a name="line-676"></a> <span class="n">QString</span> <span class="n">apiTagsUrl</span><span class="p">;</span>
+<a name="line-677"></a>
+<a name="line-678"></a> <span class="n">QDomElement</span> <span class="n">collectionElem</span> <span class="o">=</span> <span class="n">workspaceElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;collection&quot;</span><span class="p">));</span>
+<a name="line-679"></a>
+<a name="line-680"></a> <span class="k">for</span> <span class="p">(</span> <span class="p">;</span> <span class="o">!</span><span class="n">collectionElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="p">;</span>
+<a name="line-681"></a> <span class="n">collectionElem</span> <span class="o">=</span> <span class="n">collectionElem</span><span class="p">.</span><span class="n">nextSiblingElement</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;collection&quot;</span><span class="p">)))</span>
+<a name="line-682"></a> <span class="p">{</span>
+<a name="line-683"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">acceptElem</span> <span class="o">=</span> <span class="n">collectionElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;accept&quot;</span><span class="p">));</span>
+<a name="line-684"></a>
+<a name="line-685"></a> <span class="k">if</span> <span class="p">(</span><span class="n">acceptElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span> <span class="c1">// invalid section, ignore</span>
+<a name="line-686"></a> <span class="p">{</span>
+<a name="line-687"></a> <span class="k">continue</span><span class="p">;</span>
+<a name="line-688"></a> <span class="p">}</span>
+<a name="line-689"></a>
+<a name="line-690"></a> <span class="c1">// FIXME: id attribute is undocumented</span>
+<a name="line-691"></a> <span class="k">if</span> <span class="p">(</span><span class="n">collectionElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;id&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;album-list&quot;</span><span class="p">))</span>
+<a name="line-692"></a> <span class="p">{</span>
+<a name="line-693"></a> <span class="n">apiAlbumsUrl</span> <span class="o">=</span> <span class="n">collectionElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">));</span>
+<a name="line-694"></a> <span class="p">}</span>
+<a name="line-695"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">collectionElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;id&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;photo-list&quot;</span><span class="p">))</span>
+<a name="line-696"></a> <span class="p">{</span>
+<a name="line-697"></a> <span class="n">apiPhotosUrl</span> <span class="o">=</span> <span class="n">collectionElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">));</span>
+<a name="line-698"></a> <span class="p">}</span>
+<a name="line-699"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">collectionElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;id&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;tag-list&quot;</span><span class="p">))</span>
+<a name="line-700"></a> <span class="p">{</span>
+<a name="line-701"></a> <span class="n">apiTagsUrl</span> <span class="o">=</span> <span class="n">collectionElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">));</span>
+<a name="line-702"></a> <span class="p">}</span>
+<a name="line-703"></a> <span class="c1">// else skip unknown section</span>
+<a name="line-704"></a> <span class="p">}</span>
+<a name="line-705"></a>
+<a name="line-706"></a> <span class="k">if</span> <span class="p">(</span><span class="n">apiAlbumsUrl</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">apiPhotosUrl</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
+<a name="line-707"></a> <span class="p">{</span>
+<a name="line-708"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid XML data: service URLs&quot;</span><span class="p">;</span>
+<a name="line-709"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_GETSERVICE_ERROR</span><span class="p">);</span>
+<a name="line-710"></a> <span class="p">}</span>
<a name="line-711"></a>
-<a name="line-712"></a> <span class="k">while</span> <span class="p">(</span><span class="o">!</span><span class="n">ts</span><span class="p">.</span><span class="n">atEnd</span><span class="p">())</span>
-<a name="line-713"></a> <span class="p">{</span>
-<a name="line-714"></a> <span class="n">ts</span><span class="p">.</span><span class="n">readNext</span><span class="p">();</span>
+<a name="line-712"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">apiAlbumsUrl</span> <span class="o">=</span> <span class="n">apiAlbumsUrl</span><span class="p">;</span>
+<a name="line-713"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">apiPhotosUrl</span> <span class="o">=</span> <span class="n">apiPhotosUrl</span><span class="p">;</span>
+<a name="line-714"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">apiTagsUrl</span> <span class="o">=</span> <span class="n">apiTagsUrl</span><span class="p">;</span>
<a name="line-715"></a>
-<a name="line-716"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">isStartElement</span><span class="p">())</span>
-<a name="line-717"></a> <span class="p">{</span>
-<a name="line-718"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rsp&quot;</span><span class="p">))</span>
-<a name="line-719"></a> <span class="p">{</span>
-<a name="line-720"></a> <span class="n">foundResponse</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-721"></a>
-<a name="line-722"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">attributes</span><span class="p">().</span><span class="n">value</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;stat&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;ok&quot;</span><span class="p">))</span>
-<a name="line-723"></a> <span class="n">success</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-724"></a> <span class="p">}</span>
-<a name="line-725"></a>
-<a name="line-726"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;category&quot;</span><span class="p">))</span>
-<a name="line-727"></a> <span class="p">{</span>
-<a name="line-728"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">attributes</span><span class="p">().</span><span class="n">hasAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;id&quot;</span><span class="p">)))</span>
-<a name="line-729"></a> <span class="p">{</span>
-<a name="line-730"></a> <span class="n">QString</span> <span class="n">id</span><span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">attributes</span><span class="p">().</span><span class="n">value</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;id&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">());</span>
-<a name="line-731"></a> <span class="n">categories</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">id</span><span class="p">.</span><span class="n">toInt</span><span class="p">());</span>
-<a name="line-732"></a> <span class="p">}</span>
-<a name="line-733"></a> <span class="p">}</span>
-<a name="line-734"></a> <span class="p">}</span>
-<a name="line-735"></a> <span class="p">}</span>
-<a name="line-736"></a>
-<a name="line-737"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;success : &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">success</span><span class="p">;</span>
-<a name="line-738"></a>
-<a name="line-739"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">foundResponse</span><span class="p">)</span>
-<a name="line-740"></a> <span class="p">{</span>
-<a name="line-741"></a> <span class="n">emit</span> <span class="n">signalAddPhotoFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Invalid response received from remote Piwigo&quot;</span><span class="p">));</span>
-<a name="line-742"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-743"></a> <span class="p">}</span>
+<a name="line-716"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;ServiceUrls:&quot;</span><span class="p">;</span>
+<a name="line-717"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Albums&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">apiAlbumsUrl</span><span class="p">;</span>
+<a name="line-718"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Photos&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">apiPhotosUrl</span><span class="p">;</span>
+<a name="line-719"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Tags&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">apiTagsUrl</span><span class="p">;</span>
+<a name="line-720"></a>
+<a name="line-721"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_GETSERVICE_DONE</span><span class="p">;</span>
+<a name="line-722"></a> <span class="n">emit</span> <span class="nf">signalGetServiceDone</span><span class="p">();</span>
+<a name="line-723"></a><span class="p">}</span>
+<a name="line-724"></a>
+<a name="line-725"></a><span class="cm">/*</span>
+<a name="line-726"></a><span class="cm">void YFTalker::slotParseResponseCheckToken()</span>
+<a name="line-727"></a><span class="cm">{</span>
+<a name="line-728"></a><span class="cm"> // token still valid, skip getSession and getToken</span>
+<a name="line-729"></a><span class="cm"> d-&gt;state = STATE_GETTOKEN_DONE;</span>
+<a name="line-730"></a><span class="cm"> emit signalGetTokenDone();</span>
+<a name="line-731"></a><span class="cm">}</span>
+<a name="line-732"></a><span class="cm">*/</span>
+<a name="line-733"></a>
+<a name="line-734"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">slotParseResponseGetSession</span><span class="p">()</span>
+<a name="line-735"></a><span class="p">{</span>
+<a name="line-736"></a> <span class="n">QDomDocument</span> <span class="n">doc</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;session&quot;</span><span class="p">));</span>
+<a name="line-737"></a>
+<a name="line-738"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">doc</span><span class="p">.</span><span class="n">setContent</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">))</span>
+<a name="line-739"></a> <span class="p">{</span>
+<a name="line-740"></a> <span class="k">return</span> <span class="n">setErrorState</span><span class="p">(</span><span class="n">STATE_GETSESSION_ERROR</span><span class="p">);</span>
+<a name="line-741"></a> <span class="p">}</span>
+<a name="line-742"></a>
+<a name="line-743"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">rootElem</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">documentElement</span><span class="p">();</span>
<a name="line-744"></a>
-<a name="line-745"></a> <span class="k">if</span> <span class="p">(</span><span class="n">categories</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">albumId</span><span class="p">))</span>
-<a name="line-746"></a> <span class="p">{</span>
-<a name="line-747"></a> <span class="n">emit</span> <span class="n">signalAddPhotoFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Photo &#39;%1&#39; already exists in this album.&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">title</span><span class="p">));</span>
-<a name="line-748"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-749"></a> <span class="p">}</span>
-<a name="line-750"></a> <span class="k">else</span>
+<a name="line-745"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">keyElem</span> <span class="o">=</span> <span class="n">rootElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;key&quot;</span><span class="p">));</span>
+<a name="line-746"></a>
+<a name="line-747"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">requestIdElem</span> <span class="o">=</span> <span class="n">rootElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;request_id&quot;</span><span class="p">));</span>
+<a name="line-748"></a>
+<a name="line-749"></a> <span class="k">if</span> <span class="p">(</span><span class="n">keyElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">keyElem</span><span class="p">.</span><span class="n">nodeType</span><span class="p">()</span> <span class="o">!=</span> <span class="n">QDomNode</span><span class="o">::</span><span class="n">ElementNode</span> <span class="o">||</span>
+<a name="line-750"></a> <span class="n">requestIdElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">requestIdElem</span><span class="p">.</span><span class="n">nodeType</span><span class="p">()</span> <span class="o">!=</span> <span class="n">QDomNode</span><span class="o">::</span><span class="n">ElementNode</span><span class="p">)</span>
<a name="line-751"></a> <span class="p">{</span>
-<a name="line-752"></a> <span class="n">categories</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">albumId</span><span class="p">);</span>
-<a name="line-753"></a> <span class="p">}</span>
-<a name="line-754"></a>
-<a name="line-755"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">GE_SETINFO</span><span class="p">;</span>
-<a name="line-756"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker_buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-757"></a>
-<a name="line-758"></a> <span class="n">QStringList</span> <span class="n">qsl_cat</span><span class="p">;</span>
-<a name="line-759"></a>
-<a name="line-760"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">categories</span><span class="p">.</span><span class="n">size</span><span class="p">();</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-761"></a> <span class="p">{</span>
-<a name="line-762"></a> <span class="n">qsl_cat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">categories</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">)));</span>
-<a name="line-763"></a> <span class="p">}</span>
+<a name="line-752"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid XML&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">;</span>
+<a name="line-753"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_GETSESSION_ERROR</span><span class="p">);</span>
+<a name="line-754"></a> <span class="p">}</span>
+<a name="line-755"></a>
+<a name="line-756"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sessionKey</span> <span class="o">=</span> <span class="n">keyElem</span><span class="p">.</span><span class="n">text</span><span class="p">();</span>
+<a name="line-757"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sessionId</span> <span class="o">=</span> <span class="n">requestIdElem</span><span class="p">.</span><span class="n">text</span><span class="p">();</span>
+<a name="line-758"></a>
+<a name="line-759"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Session started&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sessionKey</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sessionId</span><span class="p">;</span>
+<a name="line-760"></a>
+<a name="line-761"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_GETSESSION_DONE</span><span class="p">;</span>
+<a name="line-762"></a> <span class="n">emit</span> <span class="nf">signalGetSessionDone</span><span class="p">();</span>
+<a name="line-763"></a><span class="p">}</span>
<a name="line-764"></a>
-<a name="line-765"></a> <span class="n">QStringList</span> <span class="n">qsl</span><span class="p">;</span>
-<a name="line-766"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;method=pwg.images.setInfo&quot;</span><span class="p">));</span>
-<a name="line-767"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;image_id=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">photoId</span><span class="p">));</span>
-<a name="line-768"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;categories=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">qsl_cat</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;;&#39;</span><span class="p">)).</span><span class="n">toUtf8</span><span class="p">().</span><span class="n">toPercentEncoding</span><span class="p">()));</span>
-<a name="line-769"></a> <span class="n">QString</span> <span class="n">dataParameters</span> <span class="o">=</span> <span class="n">qsl</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;&amp;&#39;</span><span class="p">));</span>
-<a name="line-770"></a> <span class="n">QByteArray</span> <span class="n">buffer</span><span class="p">;</span>
-<a name="line-771"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">dataParameters</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">());</span>
-<a name="line-772"></a>
-<a name="line-773"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">url</span><span class="p">);</span>
-<a name="line-774"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/x-www-form-urlencoded&quot;</span><span class="p">));</span>
-<a name="line-775"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">s_authToken</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">());</span>
-<a name="line-776"></a>
-<a name="line-777"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">buffer</span><span class="p">);</span>
-<a name="line-778"></a>
-<a name="line-779"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-780"></a><span class="p">}</span>
+<a name="line-765"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">slotParseResponseGetToken</span><span class="p">()</span>
+<a name="line-766"></a><span class="p">{</span>
+<a name="line-767"></a> <span class="n">QDomDocument</span> <span class="n">doc</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;response&quot;</span><span class="p">));</span>
+<a name="line-768"></a>
+<a name="line-769"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">doc</span><span class="p">.</span><span class="n">setContent</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">))</span>
+<a name="line-770"></a> <span class="p">{</span>
+<a name="line-771"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid XML: parse error&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">;</span>
+<a name="line-772"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_GETTOKEN_ERROR</span><span class="p">);</span>
+<a name="line-773"></a> <span class="p">}</span>
+<a name="line-774"></a>
+<a name="line-775"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">rootElem</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">documentElement</span><span class="p">();</span>
+<a name="line-776"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">tokenElem</span> <span class="o">=</span> <span class="n">rootElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;token&quot;</span><span class="p">));</span>
+<a name="line-777"></a>
+<a name="line-778"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tokenElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">tokenElem</span><span class="p">.</span><span class="n">nodeType</span><span class="p">()</span> <span class="o">!=</span> <span class="n">QDomNode</span><span class="o">::</span><span class="n">ElementNode</span><span class="p">)</span>
+<a name="line-779"></a> <span class="p">{</span>
+<a name="line-780"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">errorElem</span> <span class="o">=</span> <span class="n">rootElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;error&quot;</span><span class="p">));</span>
<a name="line-781"></a>
-<a name="line-782"></a><span class="kt">void</span> <span class="n">PiwigoTalker</span><span class="o">::</span><span class="n">parseResponseSetInfo</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
-<a name="line-783"></a><span class="p">{</span>
-<a name="line-784"></a> <span class="n">QString</span> <span class="n">str</span> <span class="o">=</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
-<a name="line-785"></a> <span class="n">QXmlStreamReader</span> <span class="nf">ts</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
-<a name="line-786"></a> <span class="n">QString</span> <span class="n">line</span><span class="p">;</span>
-<a name="line-787"></a> <span class="kt">bool</span> <span class="n">foundResponse</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-788"></a> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-789"></a>
-<a name="line-790"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;parseResponseSetInfo: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
-<a name="line-791"></a>
-<a name="line-792"></a> <span class="k">while</span> <span class="p">(</span><span class="o">!</span><span class="n">ts</span><span class="p">.</span><span class="n">atEnd</span><span class="p">())</span>
-<a name="line-793"></a> <span class="p">{</span>
-<a name="line-794"></a> <span class="n">ts</span><span class="p">.</span><span class="n">readNext</span><span class="p">();</span>
-<a name="line-795"></a>
-<a name="line-796"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">isStartElement</span><span class="p">())</span>
-<a name="line-797"></a> <span class="p">{</span>
-<a name="line-798"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rsp&quot;</span><span class="p">))</span>
-<a name="line-799"></a> <span class="p">{</span>
-<a name="line-800"></a> <span class="n">foundResponse</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-801"></a>
-<a name="line-802"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">attributes</span><span class="p">().</span><span class="n">value</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;stat&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;ok&quot;</span><span class="p">))</span>
-<a name="line-803"></a> <span class="n">success</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-782"></a> <span class="k">if</span> <span class="p">(</span><span class="n">errorElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">errorElem</span><span class="p">.</span><span class="n">nodeType</span><span class="p">()</span> <span class="o">!=</span> <span class="n">QDomNode</span><span class="o">::</span><span class="n">ElementNode</span><span class="p">)</span>
+<a name="line-783"></a> <span class="p">{</span>
+<a name="line-784"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Auth unknown error&quot;</span><span class="p">;</span>
+<a name="line-785"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_GETTOKEN_ERROR</span><span class="p">);</span>
+<a name="line-786"></a> <span class="p">}</span>
+<a name="line-787"></a>
+<a name="line-788"></a><span class="cm">/*</span>
+<a name="line-789"></a><span class="cm"> // checked by HTTP error code in prepareJobResult</span>
+<a name="line-790"></a><span class="cm"> const QString errorCode = errorElem.attribute(&quot;code&quot;, &quot;0&quot;);</span>
+<a name="line-791"></a><span class="cm"> qCDebug(DIGIKAM_WEBSERVICES_LOG) &lt;&lt; QString(&quot;Auth error: %1, code=%2&quot;).arg(errorElem.text()).arg(errorCode);</span>
+<a name="line-792"></a>
+<a name="line-793"></a><span class="cm"> if (errorCode == &quot;2&quot;)</span>
+<a name="line-794"></a><span class="cm"> {</span>
+<a name="line-795"></a><span class="cm"> // Invalid credentials</span>
+<a name="line-796"></a><span class="cm"> return setErrorState(STATE_GETTOKEN_INVALID_CREDENTIALS);</span>
+<a name="line-797"></a><span class="cm"> }</span>
+<a name="line-798"></a><span class="cm">*/</span>
+<a name="line-799"></a>
+<a name="line-800"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-801"></a> <span class="p">}</span>
+<a name="line-802"></a>
+<a name="line-803"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">token</span> <span class="o">=</span> <span class="n">tokenElem</span><span class="p">.</span><span class="n">text</span><span class="p">();</span>
<a name="line-804"></a>
-<a name="line-805"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-806"></a> <span class="p">}</span>
-<a name="line-807"></a> <span class="p">}</span>
-<a name="line-808"></a> <span class="p">}</span>
+<a name="line-805"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Token got&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">token</span><span class="p">;</span>
+<a name="line-806"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_GETTOKEN_DONE</span><span class="p">;</span>
+<a name="line-807"></a> <span class="n">emit</span> <span class="nf">signalGetTokenDone</span><span class="p">();</span>
+<a name="line-808"></a><span class="p">}</span>
<a name="line-809"></a>
-<a name="line-810"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">foundResponse</span><span class="p">)</span>
-<a name="line-811"></a> <span class="p">{</span>
-<a name="line-812"></a> <span class="n">emit</span> <span class="n">signalAddPhotoFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Invalid response received from remote Piwigo&quot;</span><span class="p">));</span>
-<a name="line-813"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-814"></a> <span class="p">}</span>
-<a name="line-815"></a>
-<a name="line-816"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">success</span><span class="p">)</span>
-<a name="line-817"></a> <span class="p">{</span>
-<a name="line-818"></a> <span class="n">emit</span> <span class="n">signalAddPhotoFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to upload photo&quot;</span><span class="p">));</span>
-<a name="line-819"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-820"></a> <span class="p">}</span>
-<a name="line-821"></a>
-<a name="line-822"></a> <span class="n">deleteTemporaryFile</span><span class="p">();</span>
+<a name="line-810"></a>
+<a name="line-811"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">slotParseResponseListAlbums</span><span class="p">()</span>
+<a name="line-812"></a><span class="p">{</span>
+<a name="line-813"></a> <span class="n">QDomDocument</span> <span class="n">doc</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;feed&quot;</span><span class="p">));</span>
+<a name="line-814"></a>
+<a name="line-815"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">doc</span><span class="p">.</span><span class="n">setContent</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">))</span>
+<a name="line-816"></a> <span class="p">{</span>
+<a name="line-817"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid XML: parse error&quot;</span><span class="p">;</span>
+<a name="line-818"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_LISTALBUMS_ERROR</span><span class="p">);</span>
+<a name="line-819"></a> <span class="p">}</span>
+<a name="line-820"></a>
+<a name="line-821"></a> <span class="kt">bool</span> <span class="n">errorOccurred</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-822"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">rootElem</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">documentElement</span><span class="p">();</span>
<a name="line-823"></a>
-<a name="line-824"></a> <span class="n">emit</span> <span class="nf">signalAddPhotoSucceeded</span><span class="p">();</span>
-<a name="line-825"></a><span class="p">}</span>
-<a name="line-826"></a>
-<a name="line-827"></a><span class="kt">void</span> <span class="n">PiwigoTalker</span><span class="o">::</span><span class="n">addNextChunk</span><span class="p">()</span>
-<a name="line-828"></a><span class="p">{</span>
-<a name="line-829"></a> <span class="n">QFile</span> <span class="n">imagefile</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">);</span>
-<a name="line-830"></a>
-<a name="line-831"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">imagefile</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="n">QIODevice</span><span class="o">::</span><span class="n">ReadOnly</span><span class="p">))</span>
-<a name="line-832"></a> <span class="p">{</span>
-<a name="line-833"></a> <span class="n">emit</span> <span class="n">signalProgressInfo</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Error : Cannot open photo: %1&quot;</span><span class="p">,</span> <span class="n">QUrl</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">).</span><span class="n">fileName</span><span class="p">()));</span>
-<a name="line-834"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-835"></a> <span class="p">}</span>
-<a name="line-836"></a>
-<a name="line-837"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">chunkId</span><span class="o">++</span><span class="p">;</span> <span class="c1">// We start with chunk 1</span>
+<a name="line-824"></a> <span class="c1">// find next page link</span>
+<a name="line-825"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albumsNextUrl</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
+<a name="line-826"></a><span class="hll"> <span class="n">QDomElement</span> <span class="n">linkElem</span> <span class="o">=</span> <span class="n">rootElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;link&quot;</span><span class="p">));</span><span class='error2'>&lt;--- Shadowed declaration</span>
+</span><a name="line-827"></a>
+<a name="line-828"></a> <span class="k">for</span> <span class="p">(</span> <span class="p">;</span> <span class="o">!</span><span class="n">linkElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="p">;</span>
+<a name="line-829"></a> <span class="n">linkElem</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">.</span><span class="n">nextSiblingElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;link&quot;</span><span class="p">)))</span>
+<a name="line-830"></a> <span class="p">{</span>
+<a name="line-831"></a> <span class="k">if</span> <span class="p">(</span><span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rel&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;next&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+<a name="line-832"></a> <span class="o">!</span><span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">)).</span><span class="n">isNull</span><span class="p">())</span>
+<a name="line-833"></a> <span class="p">{</span>
+<a name="line-834"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albumsNextUrl</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">));</span>
+<a name="line-835"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-836"></a> <span class="p">}</span>
+<a name="line-837"></a> <span class="p">}</span>
<a name="line-838"></a>
-<a name="line-839"></a> <span class="n">imagefile</span><span class="p">.</span><span class="n">seek</span><span class="p">((</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">chunkId</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">CHUNK_MAX_SIZE</span><span class="p">);</span>
+<a name="line-839"></a> <span class="n">QDomElement</span> <span class="n">entryElem</span> <span class="o">=</span> <span class="n">rootElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;entry&quot;</span><span class="p">));</span>
<a name="line-840"></a>
-<a name="line-841"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker_buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-842"></a> <span class="n">QStringList</span> <span class="n">qsl</span><span class="p">;</span>
-<a name="line-843"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;method=pwg.images.addChunk&quot;</span><span class="p">));</span>
-<a name="line-844"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;original_sum=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">md5sum</span><span class="p">.</span><span class="n">toHex</span><span class="p">()));</span>
-<a name="line-845"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;position=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">chunkId</span><span class="p">));</span>
-<a name="line-846"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;type=file&quot;</span><span class="p">));</span>
-<a name="line-847"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;data=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">imagefile</span><span class="p">.</span><span class="n">read</span><span class="p">(</span><span class="n">CHUNK_MAX_SIZE</span><span class="p">).</span><span class="n">toBase64</span><span class="p">().</span><span class="n">toPercentEncoding</span><span class="p">()));</span>
-<a name="line-848"></a> <span class="n">QString</span> <span class="n">dataParameters</span> <span class="o">=</span> <span class="n">qsl</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;&amp;&#39;</span><span class="p">));</span>
-<a name="line-849"></a> <span class="n">QByteArray</span> <span class="n">buffer</span><span class="p">;</span>
-<a name="line-850"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">dataParameters</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">());</span>
-<a name="line-851"></a>
-<a name="line-852"></a> <span class="n">imagefile</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
-<a name="line-853"></a>
-<a name="line-854"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">url</span><span class="p">);</span>
-<a name="line-855"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/x-www-form-urlencoded&quot;</span><span class="p">));</span>
-<a name="line-856"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">s_authToken</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">());</span>
-<a name="line-857"></a>
-<a name="line-858"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">buffer</span><span class="p">);</span>
-<a name="line-859"></a>
-<a name="line-860"></a> <span class="n">emit</span> <span class="nf">signalProgressInfo</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Upload the chunk %1/%2 of %3&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">chunkId</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">nbOfChunks</span><span class="p">,</span> <span class="n">QUrl</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">).</span><span class="n">fileName</span><span class="p">()));</span>
-<a name="line-861"></a><span class="p">}</span>
-<a name="line-862"></a>
-<a name="line-863"></a><span class="kt">void</span> <span class="n">PiwigoTalker</span><span class="o">::</span><span class="n">parseResponseAddPhotoChunk</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
-<a name="line-864"></a><span class="p">{</span>
-<a name="line-865"></a> <span class="n">QString</span> <span class="n">str</span> <span class="o">=</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
-<a name="line-866"></a> <span class="n">QXmlStreamReader</span> <span class="nf">ts</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
-<a name="line-867"></a> <span class="n">QString</span> <span class="n">line</span><span class="p">;</span>
-<a name="line-868"></a> <span class="kt">bool</span> <span class="n">foundResponse</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-869"></a> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-841"></a> <span class="k">for</span> <span class="p">(</span> <span class="p">;</span> <span class="o">!</span><span class="n">entryElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="p">;</span>
+<a name="line-842"></a> <span class="n">entryElem</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">nextSiblingElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;entry&quot;</span><span class="p">)))</span>
+<a name="line-843"></a> <span class="p">{</span>
+<a name="line-844"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">urn</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;id&quot;</span><span class="p">));</span>
+<a name="line-845"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">author</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;author&quot;</span><span class="p">));</span>
+<a name="line-846"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">title</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;title&quot;</span><span class="p">));</span>
+<a name="line-847"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">summary</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;summary&quot;</span><span class="p">));</span>
+<a name="line-848"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">published</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;published&quot;</span><span class="p">));</span>
+<a name="line-849"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">edited</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;app:edited&quot;</span><span class="p">));</span>
+<a name="line-850"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">updated</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;updated&quot;</span><span class="p">));</span>
+<a name="line-851"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">prot</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;protected&quot;</span><span class="p">));</span>
+<a name="line-852"></a>
+<a name="line-853"></a> <span class="n">QDomElement</span> <span class="n">linkSelf</span><span class="p">;</span>
+<a name="line-854"></a> <span class="n">QDomElement</span> <span class="n">linkEdit</span><span class="p">;</span>
+<a name="line-855"></a> <span class="n">QDomElement</span> <span class="n">linkPhotos</span><span class="p">;</span>
+<a name="line-856"></a>
+<a name="line-857"></a><span class="hll"> <span class="n">QDomElement</span> <span class="n">linkElem</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;link&quot;</span><span class="p">));</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-858"></a>
+<a name="line-859"></a> <span class="k">for</span> <span class="p">(</span> <span class="p">;</span> <span class="o">!</span><span class="n">linkElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="p">;</span>
+<a name="line-860"></a> <span class="n">linkElem</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">.</span><span class="n">nextSiblingElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;link&quot;</span><span class="p">)))</span>
+<a name="line-861"></a> <span class="p">{</span>
+<a name="line-862"></a> <span class="k">if</span> <span class="p">(</span><span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rel&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;self&quot;</span><span class="p">))</span>
+<a name="line-863"></a> <span class="n">linkSelf</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">;</span>
+<a name="line-864"></a> <span class="k">else</span> <span class="nf">if</span> <span class="p">(</span><span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rel&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;edit&quot;</span><span class="p">))</span>
+<a name="line-865"></a> <span class="n">linkEdit</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">;</span>
+<a name="line-866"></a> <span class="k">else</span> <span class="nf">if</span> <span class="p">(</span><span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rel&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;photos&quot;</span><span class="p">))</span>
+<a name="line-867"></a> <span class="n">linkPhotos</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">;</span>
+<a name="line-868"></a> <span class="c1">// else skip &lt;link&gt;</span>
+<a name="line-869"></a> <span class="p">}</span>
<a name="line-870"></a>
-<a name="line-871"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;parseResponseAddPhotoChunk: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
-<a name="line-872"></a>
-<a name="line-873"></a> <span class="k">while</span> <span class="p">(</span><span class="o">!</span><span class="n">ts</span><span class="p">.</span><span class="n">atEnd</span><span class="p">())</span>
-<a name="line-874"></a> <span class="p">{</span>
-<a name="line-875"></a> <span class="n">ts</span><span class="p">.</span><span class="n">readNext</span><span class="p">();</span>
-<a name="line-876"></a>
-<a name="line-877"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">isStartElement</span><span class="p">())</span>
-<a name="line-878"></a> <span class="p">{</span>
-<a name="line-879"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rsp&quot;</span><span class="p">))</span>
-<a name="line-880"></a> <span class="p">{</span>
-<a name="line-881"></a> <span class="n">foundResponse</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-882"></a>
-<a name="line-883"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">attributes</span><span class="p">().</span><span class="n">value</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;stat&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;ok&quot;</span><span class="p">))</span>
-<a name="line-884"></a> <span class="n">success</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-885"></a>
-<a name="line-886"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-887"></a> <span class="p">}</span>
-<a name="line-888"></a> <span class="p">}</span>
-<a name="line-889"></a> <span class="p">}</span>
-<a name="line-890"></a>
-<a name="line-891"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">foundResponse</span> <span class="o">||</span> <span class="o">!</span><span class="n">success</span><span class="p">)</span>
-<a name="line-892"></a> <span class="p">{</span>
-<a name="line-893"></a> <span class="n">emit</span> <span class="n">signalProgressInfo</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Warning : The full size photo cannot be uploaded.&quot;</span><span class="p">));</span>
-<a name="line-894"></a> <span class="p">}</span>
-<a name="line-895"></a>
-<a name="line-896"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">chunkId</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">nbOfChunks</span><span class="p">)</span>
-<a name="line-897"></a> <span class="p">{</span>
-<a name="line-898"></a> <span class="n">addNextChunk</span><span class="p">();</span>
-<a name="line-899"></a> <span class="p">}</span>
-<a name="line-900"></a> <span class="k">else</span>
-<a name="line-901"></a> <span class="p">{</span>
-<a name="line-902"></a> <span class="n">addPhotoSummary</span><span class="p">();</span>
-<a name="line-903"></a> <span class="p">}</span>
-<a name="line-904"></a><span class="p">}</span>
+<a name="line-871"></a> <span class="k">if</span> <span class="p">(</span><span class="n">urn</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">title</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span>
+<a name="line-872"></a> <span class="n">linkSelf</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">linkEdit</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">linkPhotos</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
+<a name="line-873"></a> <span class="p">{</span>
+<a name="line-874"></a> <span class="n">errorOccurred</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-875"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid XML data: invalid entry on line&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">lineNumber</span><span class="p">();</span>
+<a name="line-876"></a> <span class="c1">// simple skip this record, no additional messages to user</span>
+<a name="line-877"></a> <span class="k">continue</span><span class="p">;</span>
+<a name="line-878"></a> <span class="p">}</span>
+<a name="line-879"></a>
+<a name="line-880"></a> <span class="n">QString</span> <span class="n">password</span><span class="p">;</span>
+<a name="line-881"></a>
+<a name="line-882"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">prot</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">prot</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;value&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;false&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;true&quot;</span><span class="p">))</span>
+<a name="line-883"></a> <span class="p">{</span>
+<a name="line-884"></a> <span class="n">password</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">);</span> <span class="c1">// set not null value</span>
+<a name="line-885"></a> <span class="p">}</span>
+<a name="line-886"></a>
+<a name="line-887"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albums</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">YandexFotkiAlbum</span><span class="p">(</span>
+<a name="line-888"></a> <span class="n">urn</span><span class="p">.</span><span class="n">text</span><span class="p">(),</span>
+<a name="line-889"></a> <span class="n">author</span><span class="p">.</span><span class="n">text</span><span class="p">(),</span>
+<a name="line-890"></a> <span class="n">title</span><span class="p">.</span><span class="n">text</span><span class="p">(),</span>
+<a name="line-891"></a> <span class="n">summary</span><span class="p">.</span><span class="n">text</span><span class="p">(),</span>
+<a name="line-892"></a> <span class="n">linkEdit</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">)),</span>
+<a name="line-893"></a> <span class="n">linkSelf</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">)),</span>
+<a name="line-894"></a> <span class="n">linkPhotos</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">)),</span>
+<a name="line-895"></a> <span class="n">QDateTime</span><span class="o">::</span><span class="n">fromString</span><span class="p">(</span><span class="n">published</span><span class="p">.</span><span class="n">text</span><span class="p">(),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yyyy-MM-ddTHH:mm:ssZ&quot;</span><span class="p">)),</span>
+<a name="line-896"></a> <span class="n">QDateTime</span><span class="o">::</span><span class="n">fromString</span><span class="p">(</span><span class="n">edited</span><span class="p">.</span><span class="n">text</span><span class="p">(),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yyyy-MM-ddTHH:mm:ssZ&quot;</span><span class="p">)),</span>
+<a name="line-897"></a> <span class="n">QDateTime</span><span class="o">::</span><span class="n">fromString</span><span class="p">(</span><span class="n">updated</span><span class="p">.</span><span class="n">text</span><span class="p">(),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yyyy-MM-ddTHH:mm:ssZ&quot;</span><span class="p">)),</span>
+<a name="line-898"></a> <span class="n">password</span>
+<a name="line-899"></a> <span class="p">));</span>
+<a name="line-900"></a>
+<a name="line-901"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Found album:&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albums</span><span class="p">.</span><span class="n">last</span><span class="p">();</span>
+<a name="line-902"></a> <span class="p">}</span>
+<a name="line-903"></a>
+<a name="line-904"></a> <span class="c1">// TODO: pagination like listPhotos</span>
<a name="line-905"></a>
-<a name="line-906"></a><span class="kt">void</span> <span class="n">PiwigoTalker</span><span class="o">::</span><span class="n">addPhotoSummary</span><span class="p">()</span>
-<a name="line-907"></a><span class="p">{</span>
-<a name="line-908"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">GE_ADDPHOTOSUMMARY</span><span class="p">;</span>
-<a name="line-909"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker_buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-910"></a>
-<a name="line-911"></a> <span class="n">QStringList</span> <span class="n">qsl</span><span class="p">;</span>
-<a name="line-912"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;method=pwg.images.add&quot;</span><span class="p">));</span>
-<a name="line-913"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;original_sum=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">md5sum</span><span class="p">.</span><span class="n">toHex</span><span class="p">()));</span>
-<a name="line-914"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;original_filename=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">QUrl</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">).</span><span class="n">fileName</span><span class="p">().</span><span class="n">toUtf8</span><span class="p">().</span><span class="n">toPercentEncoding</span><span class="p">()));</span>
-<a name="line-915"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;name=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">title</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">().</span><span class="n">toPercentEncoding</span><span class="p">()));</span>
-<a name="line-916"></a>
-<a name="line-917"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">author</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-918"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;author=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">author</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">().</span><span class="n">toPercentEncoding</span><span class="p">()));</span>
-<a name="line-919"></a>
-<a name="line-920"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">comment</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-921"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;comment=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">comment</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">().</span><span class="n">toPercentEncoding</span><span class="p">()));</span>
-<a name="line-922"></a>
-<a name="line-923"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;categories=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">albumId</span><span class="p">));</span>
-<a name="line-924"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;file_sum=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="n">computeMD5Sum</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">).</span><span class="n">toHex</span><span class="p">()));</span>
-<a name="line-925"></a> <span class="n">qsl</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;date_creation=&quot;</span><span class="p">)</span> <span class="o">+</span>
-<a name="line-926"></a> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">.</span><span class="n">toString</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yyyy-MM-dd hh:mm:ss&quot;</span><span class="p">)).</span><span class="n">toUtf8</span><span class="p">().</span><span class="n">toPercentEncoding</span><span class="p">()));</span>
-<a name="line-927"></a>
-<a name="line-928"></a> <span class="c1">//qsl.append(&quot;tag_ids=&quot;); // TODO Implement this function</span>
-<a name="line-929"></a> <span class="n">QString</span> <span class="n">dataParameters</span> <span class="o">=</span> <span class="n">qsl</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;&amp;&#39;</span><span class="p">));</span>
-<a name="line-930"></a> <span class="n">QByteArray</span> <span class="n">buffer</span><span class="p">;</span>
-<a name="line-931"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">dataParameters</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">());</span>
-<a name="line-932"></a>
-<a name="line-933"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">url</span><span class="p">);</span>
-<a name="line-934"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/x-www-form-urlencoded&quot;</span><span class="p">));</span>
-<a name="line-935"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">s_authToken</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">());</span>
-<a name="line-936"></a>
-<a name="line-937"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">buffer</span><span class="p">);</span>
-<a name="line-938"></a>
-<a name="line-939"></a> <span class="n">emit</span> <span class="nf">signalProgressInfo</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Upload the metadata of %1&quot;</span><span class="p">,</span> <span class="n">QUrl</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">).</span><span class="n">fileName</span><span class="p">()));</span>
-<a name="line-940"></a><span class="p">}</span>
-<a name="line-941"></a>
-<a name="line-942"></a><span class="kt">void</span> <span class="n">PiwigoTalker</span><span class="o">::</span><span class="n">parseResponseAddPhotoSummary</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
-<a name="line-943"></a><span class="p">{</span>
-<a name="line-944"></a> <span class="n">QString</span> <span class="n">str</span> <span class="o">=</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
-<a name="line-945"></a> <span class="n">QXmlStreamReader</span> <span class="nf">ts</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">mid</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="s">&quot;&lt;?xml&quot;</span><span class="p">)));</span>
-<a name="line-946"></a> <span class="n">QString</span> <span class="n">line</span><span class="p">;</span>
-<a name="line-947"></a> <span class="kt">bool</span> <span class="n">foundResponse</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-948"></a> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-906"></a> <span class="c1">// if an error has occurred and we didn&#39;t find anything =&gt; notify user</span>
+<a name="line-907"></a> <span class="k">if</span> <span class="p">(</span><span class="n">errorOccurred</span> <span class="o">&amp;&amp;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albums</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-908"></a> <span class="p">{</span>
+<a name="line-909"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;No result and errors have occurred&quot;</span><span class="p">;</span>
+<a name="line-910"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_LISTALBUMS_ERROR</span><span class="p">);</span>
+<a name="line-911"></a> <span class="p">}</span>
+<a name="line-912"></a>
+<a name="line-913"></a> <span class="c1">// we have next page</span>
+<a name="line-914"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">albumsNextUrl</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
+<a name="line-915"></a> <span class="p">{</span>
+<a name="line-916"></a> <span class="k">return</span> <span class="n">listAlbumsNext</span><span class="p">();</span>
+<a name="line-917"></a> <span class="p">}</span>
+<a name="line-918"></a> <span class="k">else</span>
+<a name="line-919"></a> <span class="p">{</span>
+<a name="line-920"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;List albums done: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albums</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+<a name="line-921"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_LISTALBUMS_DONE</span><span class="p">;</span>
+<a name="line-922"></a> <span class="n">emit</span> <span class="nf">signalListAlbumsDone</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">albums</span><span class="p">);</span>
+<a name="line-923"></a> <span class="p">}</span>
+<a name="line-924"></a><span class="p">}</span>
+<a name="line-925"></a>
+<a name="line-926"></a><span class="kt">bool</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">slotParsePhotoXml</span><span class="p">(</span><span class="k">const</span> <span class="n">QDomElement</span><span class="o">&amp;</span> <span class="n">entryElem</span><span class="p">,</span> <span class="n">YFPhoto</span><span class="o">&amp;</span> <span class="n">photo</span><span class="p">)</span>
+<a name="line-927"></a><span class="p">{</span>
+<a name="line-928"></a>
+<a name="line-929"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">urn</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;id&quot;</span><span class="p">));</span>
+<a name="line-930"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">author</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;author&quot;</span><span class="p">));</span>
+<a name="line-931"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">title</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;title&quot;</span><span class="p">));</span>
+<a name="line-932"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">summary</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;summary&quot;</span><span class="p">));</span>
+<a name="line-933"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">published</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;published&quot;</span><span class="p">));</span>
+<a name="line-934"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">edited</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;app:edited&quot;</span><span class="p">));</span>
+<a name="line-935"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">updated</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;updated&quot;</span><span class="p">));</span>
+<a name="line-936"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">created</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;f:created&quot;</span><span class="p">));</span>
+<a name="line-937"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">accessAttr</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;f:access&quot;</span><span class="p">));</span>
+<a name="line-938"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">hideOriginal</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;f:hide_original&quot;</span><span class="p">));</span>
+<a name="line-939"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">disableComments</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;f:disable_comments&quot;</span><span class="p">));</span>
+<a name="line-940"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">adult</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;f:xxx&quot;</span><span class="p">));</span>
+<a name="line-941"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">content</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;content&quot;</span><span class="p">));</span>
+<a name="line-942"></a>
+<a name="line-943"></a> <span class="n">QDomElement</span> <span class="n">linkSelf</span><span class="p">;</span>
+<a name="line-944"></a> <span class="n">QDomElement</span> <span class="n">linkEdit</span><span class="p">;</span>
+<a name="line-945"></a> <span class="n">QDomElement</span> <span class="n">linkMedia</span><span class="p">;</span>
+<a name="line-946"></a> <span class="n">QDomElement</span> <span class="n">linkAlbum</span><span class="p">;</span>
+<a name="line-947"></a>
+<a name="line-948"></a> <span class="n">QDomElement</span> <span class="n">linkElem</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;link&quot;</span><span class="p">));</span>
<a name="line-949"></a>
-<a name="line-950"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;parseResponseAddPhotoSummary: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
-<a name="line-951"></a>
-<a name="line-952"></a> <span class="k">while</span> <span class="p">(</span><span class="o">!</span><span class="n">ts</span><span class="p">.</span><span class="n">atEnd</span><span class="p">())</span>
-<a name="line-953"></a> <span class="p">{</span>
-<a name="line-954"></a> <span class="n">ts</span><span class="p">.</span><span class="n">readNext</span><span class="p">();</span>
-<a name="line-955"></a>
-<a name="line-956"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">isStartElement</span><span class="p">())</span>
-<a name="line-957"></a> <span class="p">{</span>
-<a name="line-958"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rsp&quot;</span><span class="p">))</span>
-<a name="line-959"></a> <span class="p">{</span>
-<a name="line-960"></a> <span class="n">foundResponse</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-961"></a>
-<a name="line-962"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ts</span><span class="p">.</span><span class="n">attributes</span><span class="p">().</span><span class="n">value</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;stat&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;ok&quot;</span><span class="p">))</span>
-<a name="line-963"></a> <span class="n">success</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-950"></a> <span class="k">for</span> <span class="p">(</span> <span class="p">;</span> <span class="o">!</span><span class="n">linkElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="p">;</span>
+<a name="line-951"></a> <span class="n">linkElem</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">.</span><span class="n">nextSiblingElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;link&quot;</span><span class="p">)))</span>
+<a name="line-952"></a> <span class="p">{</span>
+<a name="line-953"></a>
+<a name="line-954"></a> <span class="k">if</span> <span class="p">(</span><span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rel&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;self&quot;</span><span class="p">))</span>
+<a name="line-955"></a> <span class="n">linkSelf</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">;</span>
+<a name="line-956"></a> <span class="k">else</span> <span class="nf">if</span> <span class="p">(</span><span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rel&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;edit&quot;</span><span class="p">))</span>
+<a name="line-957"></a> <span class="n">linkEdit</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">;</span>
+<a name="line-958"></a> <span class="k">else</span> <span class="nf">if</span> <span class="p">(</span><span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rel&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;edit-media&quot;</span><span class="p">))</span>
+<a name="line-959"></a> <span class="n">linkMedia</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">;</span>
+<a name="line-960"></a> <span class="k">else</span> <span class="nf">if</span> <span class="p">(</span><span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rel&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;album&quot;</span><span class="p">))</span>
+<a name="line-961"></a> <span class="n">linkAlbum</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">;</span>
+<a name="line-962"></a> <span class="c1">// else skip &lt;link&gt;</span>
+<a name="line-963"></a> <span class="p">}</span>
<a name="line-964"></a>
-<a name="line-965"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-966"></a> <span class="p">}</span>
-<a name="line-967"></a> <span class="p">}</span>
-<a name="line-968"></a> <span class="p">}</span>
-<a name="line-969"></a>
-<a name="line-970"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">foundResponse</span><span class="p">)</span>
+<a name="line-965"></a> <span class="c1">// XML sanity checks</span>
+<a name="line-966"></a> <span class="k">if</span> <span class="p">(</span><span class="n">urn</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">title</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span>
+<a name="line-967"></a> <span class="n">linkSelf</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">linkEdit</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span>
+<a name="line-968"></a> <span class="n">linkMedia</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">linkAlbum</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span>
+<a name="line-969"></a> <span class="o">!</span><span class="n">content</span><span class="p">.</span><span class="n">hasAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;src&quot;</span><span class="p">))</span> <span class="o">||</span>
+<a name="line-970"></a> <span class="o">!</span><span class="n">accessAttr</span><span class="p">.</span><span class="n">hasAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;value&quot;</span><span class="p">)))</span>
<a name="line-971"></a> <span class="p">{</span>
-<a name="line-972"></a> <span class="n">emit</span> <span class="n">signalAddPhotoFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Invalid response received from remote Piwigo (%1)&quot;</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">data</span><span class="p">)));</span>
-<a name="line-973"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-974"></a> <span class="p">}</span>
-<a name="line-975"></a>
-<a name="line-976"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">success</span><span class="p">)</span>
-<a name="line-977"></a> <span class="p">{</span>
-<a name="line-978"></a> <span class="n">emit</span> <span class="n">signalAddPhotoFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to upload photo&quot;</span><span class="p">));</span>
-<a name="line-979"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-980"></a> <span class="p">}</span>
+<a name="line-972"></a>
+<a name="line-973"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid XML data, error on line&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">lineNumber</span><span class="p">();</span>
+<a name="line-974"></a> <span class="c1">// simple skip this record, no additional messages to user</span>
+<a name="line-975"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-976"></a> <span class="p">}</span>
+<a name="line-977"></a>
+<a name="line-978"></a> <span class="k">const</span> <span class="n">QString</span> <span class="n">accessString</span> <span class="o">=</span> <span class="n">accessAttr</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;value&quot;</span><span class="p">));</span>
+<a name="line-979"></a>
+<a name="line-980"></a> <span class="n">YFPhoto</span><span class="o">::</span><span class="n">Access</span> <span class="n">access</span><span class="p">;</span>
<a name="line-981"></a>
-<a name="line-982"></a> <span class="n">deleteTemporaryFile</span><span class="p">();</span>
-<a name="line-983"></a>
-<a name="line-984"></a> <span class="n">emit</span> <span class="nf">signalAddPhotoSucceeded</span><span class="p">();</span>
-<a name="line-985"></a><span class="p">}</span>
-<a name="line-986"></a>
-<a name="line-987"></a><span class="kt">void</span> <span class="n">PiwigoTalker</span><span class="o">::</span><span class="n">deleteTemporaryFile</span><span class="p">()</span>
-<a name="line-988"></a><span class="p">{</span>
-<a name="line-989"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tmpPath</span><span class="p">.</span><span class="n">size</span><span class="p">())</span>
-<a name="line-990"></a> <span class="p">{</span>
-<a name="line-991"></a> <span class="n">QFile</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tmpPath</span><span class="p">).</span><span class="n">remove</span><span class="p">();</span>
-<a name="line-992"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tmpPath</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">);</span>
-<a name="line-993"></a> <span class="p">}</span>
-<a name="line-994"></a><span class="p">}</span>
-<a name="line-995"></a>
-<a name="line-996"></a><span class="p">}</span> <span class="c1">// namespace DigikamGenericPiwigoPlugin</span>
+<a name="line-982"></a> <span class="k">if</span> <span class="p">(</span><span class="n">accessString</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">ACCESS_STRINGS</span><span class="p">[</span><span class="n">YFPhoto</span><span class="o">::</span><span class="n">ACCESS_PRIVATE</span><span class="p">])</span>
+<a name="line-983"></a> <span class="n">access</span> <span class="o">=</span> <span class="n">YFPhoto</span><span class="o">::</span><span class="n">ACCESS_PRIVATE</span><span class="p">;</span>
+<a name="line-984"></a> <span class="k">else</span> <span class="nf">if</span> <span class="p">(</span><span class="n">accessString</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">ACCESS_STRINGS</span><span class="p">[</span><span class="n">YFPhoto</span><span class="o">::</span><span class="n">ACCESS_FRIENDS</span><span class="p">])</span>
+<a name="line-985"></a> <span class="n">access</span> <span class="o">=</span> <span class="n">YFPhoto</span><span class="o">::</span><span class="n">ACCESS_FRIENDS</span><span class="p">;</span>
+<a name="line-986"></a> <span class="k">else</span> <span class="nf">if</span> <span class="p">(</span><span class="n">accessString</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">ACCESS_STRINGS</span><span class="p">[</span><span class="n">YFPhoto</span><span class="o">::</span><span class="n">ACCESS_PUBLIC</span><span class="p">])</span>
+<a name="line-987"></a> <span class="n">access</span> <span class="o">=</span> <span class="n">YFPhoto</span><span class="o">::</span><span class="n">ACCESS_PUBLIC</span><span class="p">;</span>
+<a name="line-988"></a> <span class="k">else</span>
+<a name="line-989"></a> <span class="p">{</span>
+<a name="line-990"></a> <span class="n">qCCritical</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Unknown photo access level: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">accessString</span><span class="p">;</span>
+<a name="line-991"></a> <span class="n">access</span> <span class="o">=</span> <span class="n">YFPhoto</span><span class="o">::</span><span class="n">ACCESS_PUBLIC</span><span class="p">;</span>
+<a name="line-992"></a> <span class="p">}</span>
+<a name="line-993"></a>
+<a name="line-994"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_urn</span> <span class="o">=</span> <span class="n">urn</span><span class="p">.</span><span class="n">text</span><span class="p">();</span>
+<a name="line-995"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_author</span> <span class="o">=</span> <span class="n">author</span><span class="p">.</span><span class="n">text</span><span class="p">();</span>
+<a name="line-996"></a>
+<a name="line-997"></a> <span class="n">photo</span><span class="p">.</span><span class="n">setTitle</span><span class="p">(</span><span class="n">title</span><span class="p">.</span><span class="n">text</span><span class="p">());</span>
+<a name="line-998"></a> <span class="n">photo</span><span class="p">.</span><span class="n">setSummary</span><span class="p">(</span><span class="n">summary</span><span class="p">.</span><span class="n">text</span><span class="p">());</span>
+<a name="line-999"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_apiEditUrl</span> <span class="o">=</span> <span class="n">linkEdit</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">));</span>
+<a name="line-1000"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_apiSelfUrl</span> <span class="o">=</span> <span class="n">linkSelf</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">));</span>
+<a name="line-1001"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_apiMediaUrl</span> <span class="o">=</span> <span class="n">linkMedia</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">));</span>
+<a name="line-1002"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_apiAlbumUrl</span> <span class="o">=</span> <span class="n">linkAlbum</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">));</span>
+<a name="line-1003"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_publishedDate</span> <span class="o">=</span> <span class="n">QDateTime</span><span class="o">::</span><span class="n">fromString</span><span class="p">(</span><span class="n">published</span><span class="p">.</span><span class="n">text</span><span class="p">(),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yyyy-MM-ddTHH:mm:ssZ&quot;</span><span class="p">));</span>
+<a name="line-1004"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_editedDate</span> <span class="o">=</span> <span class="n">QDateTime</span><span class="o">::</span><span class="n">fromString</span><span class="p">(</span><span class="n">edited</span><span class="p">.</span><span class="n">text</span><span class="p">(),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yyyy-MM-ddTHH:mm:ssZ&quot;</span><span class="p">));</span>
+<a name="line-1005"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_updatedDate</span> <span class="o">=</span> <span class="n">QDateTime</span><span class="o">::</span><span class="n">fromString</span><span class="p">(</span><span class="n">updated</span><span class="p">.</span><span class="n">text</span><span class="p">(),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yyyy-MM-ddTHH:mm:ssZ&quot;</span><span class="p">));</span>
+<a name="line-1006"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_createdDate</span> <span class="o">=</span> <span class="n">QDateTime</span><span class="o">::</span><span class="n">fromString</span><span class="p">(</span><span class="n">created</span><span class="p">.</span><span class="n">text</span><span class="p">(),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yyyy-MM-ddTHH:mm:ss&quot;</span><span class="p">));</span>
+<a name="line-1007"></a>
+<a name="line-1008"></a> <span class="n">photo</span><span class="p">.</span><span class="n">setAccess</span><span class="p">(</span><span class="n">access</span><span class="p">);</span>
+<a name="line-1009"></a> <span class="n">photo</span><span class="p">.</span><span class="n">setHideOriginal</span><span class="p">(</span><span class="n">hideOriginal</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span>
+<a name="line-1010"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;value&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;false&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;true&quot;</span><span class="p">));</span>
+<a name="line-1011"></a> <span class="n">photo</span><span class="p">.</span><span class="n">setDisableComments</span><span class="p">(</span><span class="n">disableComments</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span>
+<a name="line-1012"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;value&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;false&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;true&quot;</span><span class="p">));</span>
+<a name="line-1013"></a> <span class="n">photo</span><span class="p">.</span><span class="n">setAdult</span><span class="p">(</span><span class="n">adult</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span>
+<a name="line-1014"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;value&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;false&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;true&quot;</span><span class="p">));</span>
+<a name="line-1015"></a>
+<a name="line-1016"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_remoteUrl</span> <span class="o">=</span> <span class="n">content</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;src&quot;</span><span class="p">));</span>
+<a name="line-1017"></a>
+<a name="line-1018"></a> <span class="cm">/*</span>
+<a name="line-1019"></a><span class="cm"> * FIXME: tags part of the API is not documented by Yandex</span>
+<a name="line-1020"></a><span class="cm"> */</span>
+<a name="line-1021"></a>
+<a name="line-1022"></a> <span class="c1">// reload all tags from the response</span>
+<a name="line-1023"></a> <span class="n">photo</span><span class="p">.</span><span class="n">tags</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
+<a name="line-1024"></a> <span class="n">QDomElement</span> <span class="n">category</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;category&quot;</span><span class="p">));</span>
+<a name="line-1025"></a>
+<a name="line-1026"></a> <span class="k">for</span> <span class="p">(</span> <span class="p">;</span> <span class="o">!</span><span class="n">category</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="p">;</span>
+<a name="line-1027"></a> <span class="n">category</span> <span class="o">=</span> <span class="n">category</span><span class="p">.</span><span class="n">nextSiblingElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;category&quot;</span><span class="p">)))</span>
+<a name="line-1028"></a> <span class="p">{</span>
+<a name="line-1029"></a> <span class="k">if</span> <span class="p">(</span><span class="n">category</span><span class="p">.</span><span class="n">hasAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;term&quot;</span><span class="p">))</span> <span class="o">&amp;&amp;</span>
+<a name="line-1030"></a> <span class="n">category</span><span class="p">.</span><span class="n">hasAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;scheme&quot;</span><span class="p">))</span> <span class="o">&amp;&amp;</span>
+<a name="line-1031"></a> <span class="c1">// FIXME: I have no idea how to make its better, usable API is needed</span>
+<a name="line-1032"></a> <span class="n">category</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;scheme&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">apiTagsUrl</span><span class="p">)</span>
+<a name="line-1033"></a> <span class="p">{</span>
+<a name="line-1034"></a> <span class="n">photo</span><span class="p">.</span><span class="n">tags</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">category</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;term&quot;</span><span class="p">)));</span>
+<a name="line-1035"></a> <span class="p">}</span>
+<a name="line-1036"></a> <span class="p">}</span>
+<a name="line-1037"></a>
+<a name="line-1038"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-1039"></a><span class="p">}</span>
+<a name="line-1040"></a>
+<a name="line-1041"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">slotParseResponseListPhotos</span><span class="p">()</span>
+<a name="line-1042"></a><span class="p">{</span>
+<a name="line-1043"></a> <span class="n">QDomDocument</span> <span class="n">doc</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;feed&quot;</span><span class="p">));</span>
+<a name="line-1044"></a>
+<a name="line-1045"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">doc</span><span class="p">.</span><span class="n">setContent</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">))</span>
+<a name="line-1046"></a> <span class="p">{</span>
+<a name="line-1047"></a> <span class="n">qCCritical</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid XML, parse error: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">;</span>
+<a name="line-1048"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_LISTPHOTOS_ERROR</span><span class="p">);</span>
+<a name="line-1049"></a> <span class="p">}</span>
+<a name="line-1050"></a>
+<a name="line-1051"></a> <span class="kt">int</span> <span class="n">initialSize</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+<a name="line-1052"></a> <span class="kt">bool</span> <span class="n">errorOccurred</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-1053"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">rootElem</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">documentElement</span><span class="p">();</span>
+<a name="line-1054"></a>
+<a name="line-1055"></a> <span class="c1">// find next page link</span>
+<a name="line-1056"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photosNextUrl</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
+<a name="line-1057"></a> <span class="n">QDomElement</span> <span class="n">linkElem</span> <span class="o">=</span> <span class="n">rootElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;link&quot;</span><span class="p">));</span>
+<a name="line-1058"></a>
+<a name="line-1059"></a> <span class="k">for</span> <span class="p">(</span> <span class="p">;</span> <span class="o">!</span><span class="n">linkElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="p">;</span>
+<a name="line-1060"></a> <span class="n">linkElem</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">.</span><span class="n">nextSiblingElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;link&quot;</span><span class="p">)))</span>
+<a name="line-1061"></a> <span class="p">{</span>
+<a name="line-1062"></a> <span class="k">if</span> <span class="p">(</span><span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rel&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;next&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+<a name="line-1063"></a> <span class="o">!</span><span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">)).</span><span class="n">isNull</span><span class="p">())</span>
+<a name="line-1064"></a> <span class="p">{</span>
+<a name="line-1065"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photosNextUrl</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">));</span>
+<a name="line-1066"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-1067"></a> <span class="p">}</span>
+<a name="line-1068"></a> <span class="p">}</span>
+<a name="line-1069"></a>
+<a name="line-1070"></a> <span class="n">QDomElement</span> <span class="n">entryElem</span> <span class="o">=</span> <span class="n">rootElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;entry&quot;</span><span class="p">));</span>
+<a name="line-1071"></a>
+<a name="line-1072"></a> <span class="k">for</span> <span class="p">(</span> <span class="p">;</span> <span class="o">!</span><span class="n">entryElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="p">;</span>
+<a name="line-1073"></a> <span class="n">entryElem</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">nextSiblingElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;entry&quot;</span><span class="p">)))</span>
+<a name="line-1074"></a> <span class="p">{</span>
+<a name="line-1075"></a> <span class="n">YFPhoto</span> <span class="n">photo</span><span class="p">;</span>
+<a name="line-1076"></a>
+<a name="line-1077"></a> <span class="k">if</span> <span class="p">(</span><span class="n">slotParsePhotoXml</span><span class="p">(</span><span class="n">entryElem</span><span class="p">,</span> <span class="n">photo</span><span class="p">))</span>
+<a name="line-1078"></a> <span class="p">{</span>
+<a name="line-1079"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">photo</span><span class="p">);</span>
+<a name="line-1080"></a> <span class="p">}</span>
+<a name="line-1081"></a> <span class="k">else</span>
+<a name="line-1082"></a> <span class="p">{</span>
+<a name="line-1083"></a> <span class="c1">// set error mark and continue</span>
+<a name="line-1084"></a> <span class="n">errorOccurred</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-1085"></a> <span class="p">}</span>
+<a name="line-1086"></a> <span class="p">}</span>
+<a name="line-1087"></a>
+<a name="line-1088"></a> <span class="c1">// if an error has occurred and we didn&#39;t find anything =&gt; notify user</span>
+<a name="line-1089"></a> <span class="k">if</span> <span class="p">(</span><span class="n">errorOccurred</span> <span class="o">&amp;&amp;</span> <span class="n">initialSize</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">size</span><span class="p">())</span>
+<a name="line-1090"></a> <span class="p">{</span>
+<a name="line-1091"></a> <span class="n">qCCritical</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;No photos found, some XML errors have occurred&quot;</span><span class="p">;</span>
+<a name="line-1092"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_LISTPHOTOS_ERROR</span><span class="p">);</span>
+<a name="line-1093"></a> <span class="p">}</span>
+<a name="line-1094"></a>
+<a name="line-1095"></a> <span class="c1">// we have next page</span>
+<a name="line-1096"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">photosNextUrl</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
+<a name="line-1097"></a> <span class="p">{</span>
+<a name="line-1098"></a> <span class="k">return</span> <span class="n">listPhotosNext</span><span class="p">();</span>
+<a name="line-1099"></a> <span class="p">}</span>
+<a name="line-1100"></a> <span class="k">else</span>
+<a name="line-1101"></a> <span class="p">{</span>
+<a name="line-1102"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;List photos done: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+<a name="line-1103"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_LISTPHOTOS_DONE</span><span class="p">;</span>
+<a name="line-1104"></a> <span class="n">emit</span> <span class="nf">signalListPhotosDone</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">);</span>
+<a name="line-1105"></a> <span class="p">}</span>
+<a name="line-1106"></a><span class="p">}</span>
+<a name="line-1107"></a>
+<a name="line-1108"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">slotParseResponseUpdatePhotoFile</span><span class="p">()</span>
+<a name="line-1109"></a><span class="p">{</span>
+<a name="line-1110"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Uploaded photo document&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">;</span>
+<a name="line-1111"></a> <span class="n">QDomDocument</span> <span class="nf">doc</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;entry&quot;</span><span class="p">));</span>
+<a name="line-1112"></a>
+<a name="line-1113"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">doc</span><span class="p">.</span><span class="n">setContent</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">))</span>
+<a name="line-1114"></a> <span class="p">{</span>
+<a name="line-1115"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid XML, parse error&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">;</span>
+<a name="line-1116"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_UPDATEPHOTO_INFO_ERROR</span><span class="p">);</span>
+<a name="line-1117"></a> <span class="p">}</span>
+<a name="line-1118"></a>
+<a name="line-1119"></a> <span class="n">YFPhoto</span><span class="o">&amp;</span> <span class="n">photo</span> <span class="o">=</span> <span class="o">*</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">lastPhoto</span><span class="p">;</span>
+<a name="line-1120"></a> <span class="n">YFPhoto</span> <span class="n">tmpPhoto</span><span class="p">;</span>
+<a name="line-1121"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">entryElem</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">documentElement</span><span class="p">();</span>
+<a name="line-1122"></a>
+<a name="line-1123"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">slotParsePhotoXml</span><span class="p">(</span><span class="n">entryElem</span><span class="p">,</span> <span class="n">tmpPhoto</span><span class="p">))</span>
+<a name="line-1124"></a> <span class="p">{</span>
+<a name="line-1125"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid XML, entry not found&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">;</span>
+<a name="line-1126"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_UPDATEPHOTO_INFO_ERROR</span><span class="p">);</span>
+<a name="line-1127"></a> <span class="p">}</span>
+<a name="line-1128"></a>
+<a name="line-1129"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_urn</span> <span class="o">=</span> <span class="n">tmpPhoto</span><span class="p">.</span><span class="n">m_urn</span><span class="p">;</span>
+<a name="line-1130"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_apiEditUrl</span> <span class="o">=</span> <span class="n">tmpPhoto</span><span class="p">.</span><span class="n">m_apiEditUrl</span><span class="p">;</span>
+<a name="line-1131"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_apiSelfUrl</span> <span class="o">=</span> <span class="n">tmpPhoto</span><span class="p">.</span><span class="n">m_apiSelfUrl</span><span class="p">;</span>
+<a name="line-1132"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_apiMediaUrl</span> <span class="o">=</span> <span class="n">tmpPhoto</span><span class="p">.</span><span class="n">m_apiMediaUrl</span><span class="p">;</span>
+<a name="line-1133"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_remoteUrl</span> <span class="o">=</span> <span class="n">tmpPhoto</span><span class="p">.</span><span class="n">m_remoteUrl</span><span class="p">;</span>
+<a name="line-1134"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_author</span> <span class="o">=</span> <span class="n">tmpPhoto</span><span class="p">.</span><span class="n">m_author</span><span class="p">;</span>
+<a name="line-1135"></a>
+<a name="line-1136"></a> <span class="c1">// update info</span>
+<a name="line-1137"></a> <span class="n">updatePhotoInfo</span><span class="p">(</span><span class="n">photo</span><span class="p">);</span>
+<a name="line-1138"></a><span class="p">}</span>
+<a name="line-1139"></a>
+<a name="line-1140"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">slotParseResponseUpdatePhotoInfo</span><span class="p">()</span>
+<a name="line-1141"></a><span class="p">{</span>
+<a name="line-1142"></a> <span class="n">YFPhoto</span><span class="o">&amp;</span> <span class="n">photo</span> <span class="o">=</span> <span class="o">*</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">lastPhoto</span><span class="p">;</span>
+<a name="line-1143"></a>
+<a name="line-1144"></a><span class="cm">/*</span>
+<a name="line-1145"></a><span class="cm"> // reload all information</span>
+<a name="line-1146"></a><span class="cm"> QDomDocument doc(&quot;entry&quot;);</span>
+<a name="line-1147"></a>
+<a name="line-1148"></a><span class="cm"> if (!doc.setContent(d-&gt;buffer))</span>
+<a name="line-1149"></a><span class="cm"> {</span>
+<a name="line-1150"></a><span class="cm"> qCDebug(DIGIKAM_WEBSERVICES_LOG) &lt;&lt; &quot;Invalid XML: parse error&quot; &lt;&lt; d-&gt;buffer;</span>
+<a name="line-1151"></a><span class="cm"> return setErrorState(STATE_UPDATEPHOTO_INFO_ERROR);</span>
+<a name="line-1152"></a><span class="cm"> }</span>
+<a name="line-1153"></a>
+<a name="line-1154"></a><span class="cm"> const QDomElement entryElem = doc.documentElement();</span>
+<a name="line-1155"></a>
+<a name="line-1156"></a><span class="cm"> if (!slotParsePhotoXml(entryElem, photo))</span>
+<a name="line-1157"></a><span class="cm"> {</span>
+<a name="line-1158"></a><span class="cm"> qCDebug(DIGIKAM_WEBSERVICES_LOG) &lt;&lt; &quot;Can&#39;t reload photo after uploading&quot;;</span>
+<a name="line-1159"></a><span class="cm"> return setErrorState(STATE_UPDATEPHOTO_INFO_ERROR);</span>
+<a name="line-1160"></a><span class="cm"> }</span>
+<a name="line-1161"></a><span class="cm">*/</span>
+<a name="line-1162"></a>
+<a name="line-1163"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_UPDATEPHOTO_DONE</span><span class="p">;</span>
+<a name="line-1164"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">lastPhoto</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-1165"></a> <span class="n">emit</span> <span class="nf">signalUpdatePhotoDone</span><span class="p">(</span><span class="n">photo</span><span class="p">);</span>
+<a name="line-1166"></a><span class="p">}</span>
+<a name="line-1167"></a>
+<a name="line-1168"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">slotParseResponseUpdateAlbum</span><span class="p">()</span>
+<a name="line-1169"></a><span class="p">{</span>
+<a name="line-1170"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Updated album&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">;</span>
+<a name="line-1171"></a>
+<a name="line-1172"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_UPDATEALBUM_DONE</span><span class="p">;</span>
+<a name="line-1173"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">lastPhoto</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-1174"></a>
+<a name="line-1175"></a> <span class="n">emit</span> <span class="nf">signalUpdateAlbumDone</span><span class="p">();</span>
+<a name="line-1176"></a><span class="p">}</span>
+<a name="line-1177"></a>
+<a name="line-1178"></a><span class="p">}</span> <span class="c1">// namespace DigikamGenericYFPlugin</span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/13.html b/static/reports/cppcheck/master/13.html
index cd3403442..26dc5feb8 100644
--- a/static/reports/cppcheck/master/13.html
+++ b/static/reports/cppcheck/master/13.html
@@ -1,2117 +1,2631 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/dplugins/generic/webservices/twitter/twittertalker.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/libs/dngwriter/dngwriter_convert.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> twittertalker.cpp</p>
-<a href='13.html#line-967'> shadowVar 967</a><a href='13.html#line-976'> shadowVar 976</a>
+ <p id="filename"><a href="index.html">Defects:</a> dngwriter_convert.cpp</p>
+<a href='13.html#line-273'> shadowVar 273</a><a href='13.html#line-273'> shadowVar 273</a><a href='13.html#line-923'> shadowVar 923</a><a href='13.html#line-1010'> shadowVar 1010</a>
</div>
<div id="content">
-<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
-100
-101
-102
-103
-104
-105
-106
-107
-108
-109
-110
-111
-112
-113
-114
-115
-116
-117
-118
-119
-120
-121
-122
-123
-124
-125
-126
-127
-128
-129
-130
-131
-132
-133
-134
-135
-136
-137
-138
-139
-140
-141
-142
-143
-144
-145
-146
-147
-148
-149
-150
-151
-152
-153
-154
-155
-156
-157
-158
-159
-160
-161
-162
-163
-164
-165
-166
-167
-168
-169
-170
-171
-172
-173
-174
-175
-176
-177
-178
-179
-180
-181
-182
-183
-184
-185
-186
-187
-188
-189
-190
-191
-192
-193
-194
-195
-196
-197
-198
-199
-200
-201
-202
-203
-204
-205
-206
-207
-208
-209
-210
-211
-212
-213
-214
-215
-216
-217
-218
-219
-220
-221
-222
-223
-224
-225
-226
-227
-228
-229
-230
-231
-232
-233
-234
-235
-236
-237
-238
-239
-240
-241
-242
-243
-244
-245
-246
-247
-248
-249
-250
-251
-252
-253
-254
-255
-256
-257
-258
-259
-260
-261
-262
-263
-264
-265
-266
-267
-268
-269
-270
-271
-272
-273
-274
-275
-276
-277
-278
-279
-280
-281
-282
-283
-284
-285
-286
-287
-288
-289
-290
-291
-292
-293
-294
-295
-296
-297
-298
-299
-300
-301
-302
-303
-304
-305
-306
-307
-308
-309
-310
-311
-312
-313
-314
-315
-316
-317
-318
-319
-320
-321
-322
-323
-324
-325
-326
-327
-328
-329
-330
-331
-332
-333
-334
-335
-336
-337
-338
-339
-340
-341
-342
-343
-344
-345
-346
-347
-348
-349
-350
-351
-352
-353
-354
-355
-356
-357
-358
-359
-360
-361
-362
-363
-364
-365
-366
-367
-368
-369
-370
-371
-372
-373
-374
-375
-376
-377
-378
-379
-380
-381
-382
-383
-384
-385
-386
-387
-388
-389
-390
-391
-392
-393
-394
-395
-396
-397
-398
-399
-400
-401
-402
-403
-404
-405
-406
-407
-408
-409
-410
-411
-412
-413
-414
-415
-416
-417
-418
-419
-420
-421
-422
-423
-424
-425
-426
-427
-428
-429
-430
-431
-432
-433
-434
-435
-436
-437
-438
-439
-440
-441
-442
-443
-444
-445
-446
-447
-448
-449
-450
-451
-452
-453
-454
-455
-456
-457
-458
-459
-460
-461
-462
-463
-464
-465
-466
-467
-468
-469
-470
-471
-472
-473
-474
-475
-476
-477
-478
-479
-480
-481
-482
-483
-484
-485
-486
-487
-488
-489
-490
-491
-492
-493
-494
-495
-496
-497
-498
-499
-500
-501
-502
-503
-504
-505
-506
-507
-508
-509
-510
-511
-512
-513
-514
-515
-516
-517
-518
-519
-520
-521
-522
-523
-524
-525
-526
-527
-528
-529
-530
-531
-532
-533
-534
-535
-536
-537
-538
-539
-540
-541
-542
-543
-544
-545
-546
-547
-548
-549
-550
-551
-552
-553
-554
-555
-556
-557
-558
-559
-560
-561
-562
-563
-564
-565
-566
-567
-568
-569
-570
-571
-572
-573
-574
-575
-576
-577
-578
-579
-580
-581
-582
-583
-584
-585
-586
-587
-588
-589
-590
-591
-592
-593
-594
-595
-596
-597
-598
-599
-600
-601
-602
-603
-604
-605
-606
-607
-608
-609
-610
-611
-612
-613
-614
-615
-616
-617
-618
-619
-620
-621
-622
-623
-624
-625
-626
-627
-628
-629
-630
-631
-632
-633
-634
-635
-636
-637
-638
-639
-640
-641
-642
-643
-644
-645
-646
-647
-648
-649
-650
-651
-652
-653
-654
-655
-656
-657
-658
-659
-660
-661
-662
-663
-664
-665
-666
-667
-668
-669
-670
-671
-672
-673
-674
-675
-676
-677
-678
-679
-680
-681
-682
-683
-684
-685
-686
-687
-688
-689
-690
-691
-692
-693
-694
-695
-696
-697
-698
-699
-700
-701
-702
-703
-704
-705
-706
-707
-708
-709
-710
-711
-712
-713
-714
-715
-716
-717
-718
-719
-720
-721
-722
-723
-724
-725
-726
-727
-728
-729
-730
-731
-732
-733
-734
-735
-736
-737
-738
-739
-740
-741
-742
-743
-744
-745
-746
-747
-748
-749
-750
-751
-752
-753
-754
-755
-756
-757
-758
-759
-760
-761
-762
-763
-764
-765
-766
-767
-768
-769
-770
-771
-772
-773
-774
-775
-776
-777
-778
-779
-780
-781
-782
-783
-784
-785
-786
-787
-788
-789
-790
-791
-792
-793
-794
-795
-796
-797
-798
-799
-800
-801
-802
-803
-804
-805
-806
-807
-808
-809
-810
-811
-812
-813
-814
-815
-816
-817
-818
-819
-820
-821
-822
-823
-824
-825
-826
-827
-828
-829
-830
-831
-832
-833
-834
-835
-836
-837
-838
-839
-840
-841
-842
-843
-844
-845
-846
-847
-848
-849
-850
-851
-852
-853
-854
-855
-856
-857
-858
-859
-860
-861
-862
-863
-864
-865
-866
-867
-868
-869
-870
-871
-872
-873
-874
-875
-876
-877
-878
-879
-880
-881
-882
-883
-884
-885
-886
-887
-888
-889
-890
-891
-892
-893
-894
-895
-896
-897
-898
-899
-900
-901
-902
-903
-904
-905
-906
-907
-908
-909
-910
-911
-912
-913
-914
-915
-916
-917
-918
-919
-920
-921
-922
-923
-924
-925
-926
-927
-928
-929
-930
-931
-932
-933
-934
-935
-936
-937
-938
-939
-940
-941
-942
-943
-944
-945
-946
-947
-948
-949
-950
-951
-952
-953
-954
-955
-956
-957
-958
-959
-960
-961
-962
-963
-964
-965
-966
-967
-968
-969
-970
-971
-972
-973
-974
-975
-976
-977
-978
-979
-980
-981
-982
-983
-984
-985
-986</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
+<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+ 100
+ 101
+ 102
+ 103
+ 104
+ 105
+ 106
+ 107
+ 108
+ 109
+ 110
+ 111
+ 112
+ 113
+ 114
+ 115
+ 116
+ 117
+ 118
+ 119
+ 120
+ 121
+ 122
+ 123
+ 124
+ 125
+ 126
+ 127
+ 128
+ 129
+ 130
+ 131
+ 132
+ 133
+ 134
+ 135
+ 136
+ 137
+ 138
+ 139
+ 140
+ 141
+ 142
+ 143
+ 144
+ 145
+ 146
+ 147
+ 148
+ 149
+ 150
+ 151
+ 152
+ 153
+ 154
+ 155
+ 156
+ 157
+ 158
+ 159
+ 160
+ 161
+ 162
+ 163
+ 164
+ 165
+ 166
+ 167
+ 168
+ 169
+ 170
+ 171
+ 172
+ 173
+ 174
+ 175
+ 176
+ 177
+ 178
+ 179
+ 180
+ 181
+ 182
+ 183
+ 184
+ 185
+ 186
+ 187
+ 188
+ 189
+ 190
+ 191
+ 192
+ 193
+ 194
+ 195
+ 196
+ 197
+ 198
+ 199
+ 200
+ 201
+ 202
+ 203
+ 204
+ 205
+ 206
+ 207
+ 208
+ 209
+ 210
+ 211
+ 212
+ 213
+ 214
+ 215
+ 216
+ 217
+ 218
+ 219
+ 220
+ 221
+ 222
+ 223
+ 224
+ 225
+ 226
+ 227
+ 228
+ 229
+ 230
+ 231
+ 232
+ 233
+ 234
+ 235
+ 236
+ 237
+ 238
+ 239
+ 240
+ 241
+ 242
+ 243
+ 244
+ 245
+ 246
+ 247
+ 248
+ 249
+ 250
+ 251
+ 252
+ 253
+ 254
+ 255
+ 256
+ 257
+ 258
+ 259
+ 260
+ 261
+ 262
+ 263
+ 264
+ 265
+ 266
+ 267
+ 268
+ 269
+ 270
+ 271
+ 272
+ 273
+ 274
+ 275
+ 276
+ 277
+ 278
+ 279
+ 280
+ 281
+ 282
+ 283
+ 284
+ 285
+ 286
+ 287
+ 288
+ 289
+ 290
+ 291
+ 292
+ 293
+ 294
+ 295
+ 296
+ 297
+ 298
+ 299
+ 300
+ 301
+ 302
+ 303
+ 304
+ 305
+ 306
+ 307
+ 308
+ 309
+ 310
+ 311
+ 312
+ 313
+ 314
+ 315
+ 316
+ 317
+ 318
+ 319
+ 320
+ 321
+ 322
+ 323
+ 324
+ 325
+ 326
+ 327
+ 328
+ 329
+ 330
+ 331
+ 332
+ 333
+ 334
+ 335
+ 336
+ 337
+ 338
+ 339
+ 340
+ 341
+ 342
+ 343
+ 344
+ 345
+ 346
+ 347
+ 348
+ 349
+ 350
+ 351
+ 352
+ 353
+ 354
+ 355
+ 356
+ 357
+ 358
+ 359
+ 360
+ 361
+ 362
+ 363
+ 364
+ 365
+ 366
+ 367
+ 368
+ 369
+ 370
+ 371
+ 372
+ 373
+ 374
+ 375
+ 376
+ 377
+ 378
+ 379
+ 380
+ 381
+ 382
+ 383
+ 384
+ 385
+ 386
+ 387
+ 388
+ 389
+ 390
+ 391
+ 392
+ 393
+ 394
+ 395
+ 396
+ 397
+ 398
+ 399
+ 400
+ 401
+ 402
+ 403
+ 404
+ 405
+ 406
+ 407
+ 408
+ 409
+ 410
+ 411
+ 412
+ 413
+ 414
+ 415
+ 416
+ 417
+ 418
+ 419
+ 420
+ 421
+ 422
+ 423
+ 424
+ 425
+ 426
+ 427
+ 428
+ 429
+ 430
+ 431
+ 432
+ 433
+ 434
+ 435
+ 436
+ 437
+ 438
+ 439
+ 440
+ 441
+ 442
+ 443
+ 444
+ 445
+ 446
+ 447
+ 448
+ 449
+ 450
+ 451
+ 452
+ 453
+ 454
+ 455
+ 456
+ 457
+ 458
+ 459
+ 460
+ 461
+ 462
+ 463
+ 464
+ 465
+ 466
+ 467
+ 468
+ 469
+ 470
+ 471
+ 472
+ 473
+ 474
+ 475
+ 476
+ 477
+ 478
+ 479
+ 480
+ 481
+ 482
+ 483
+ 484
+ 485
+ 486
+ 487
+ 488
+ 489
+ 490
+ 491
+ 492
+ 493
+ 494
+ 495
+ 496
+ 497
+ 498
+ 499
+ 500
+ 501
+ 502
+ 503
+ 504
+ 505
+ 506
+ 507
+ 508
+ 509
+ 510
+ 511
+ 512
+ 513
+ 514
+ 515
+ 516
+ 517
+ 518
+ 519
+ 520
+ 521
+ 522
+ 523
+ 524
+ 525
+ 526
+ 527
+ 528
+ 529
+ 530
+ 531
+ 532
+ 533
+ 534
+ 535
+ 536
+ 537
+ 538
+ 539
+ 540
+ 541
+ 542
+ 543
+ 544
+ 545
+ 546
+ 547
+ 548
+ 549
+ 550
+ 551
+ 552
+ 553
+ 554
+ 555
+ 556
+ 557
+ 558
+ 559
+ 560
+ 561
+ 562
+ 563
+ 564
+ 565
+ 566
+ 567
+ 568
+ 569
+ 570
+ 571
+ 572
+ 573
+ 574
+ 575
+ 576
+ 577
+ 578
+ 579
+ 580
+ 581
+ 582
+ 583
+ 584
+ 585
+ 586
+ 587
+ 588
+ 589
+ 590
+ 591
+ 592
+ 593
+ 594
+ 595
+ 596
+ 597
+ 598
+ 599
+ 600
+ 601
+ 602
+ 603
+ 604
+ 605
+ 606
+ 607
+ 608
+ 609
+ 610
+ 611
+ 612
+ 613
+ 614
+ 615
+ 616
+ 617
+ 618
+ 619
+ 620
+ 621
+ 622
+ 623
+ 624
+ 625
+ 626
+ 627
+ 628
+ 629
+ 630
+ 631
+ 632
+ 633
+ 634
+ 635
+ 636
+ 637
+ 638
+ 639
+ 640
+ 641
+ 642
+ 643
+ 644
+ 645
+ 646
+ 647
+ 648
+ 649
+ 650
+ 651
+ 652
+ 653
+ 654
+ 655
+ 656
+ 657
+ 658
+ 659
+ 660
+ 661
+ 662
+ 663
+ 664
+ 665
+ 666
+ 667
+ 668
+ 669
+ 670
+ 671
+ 672
+ 673
+ 674
+ 675
+ 676
+ 677
+ 678
+ 679
+ 680
+ 681
+ 682
+ 683
+ 684
+ 685
+ 686
+ 687
+ 688
+ 689
+ 690
+ 691
+ 692
+ 693
+ 694
+ 695
+ 696
+ 697
+ 698
+ 699
+ 700
+ 701
+ 702
+ 703
+ 704
+ 705
+ 706
+ 707
+ 708
+ 709
+ 710
+ 711
+ 712
+ 713
+ 714
+ 715
+ 716
+ 717
+ 718
+ 719
+ 720
+ 721
+ 722
+ 723
+ 724
+ 725
+ 726
+ 727
+ 728
+ 729
+ 730
+ 731
+ 732
+ 733
+ 734
+ 735
+ 736
+ 737
+ 738
+ 739
+ 740
+ 741
+ 742
+ 743
+ 744
+ 745
+ 746
+ 747
+ 748
+ 749
+ 750
+ 751
+ 752
+ 753
+ 754
+ 755
+ 756
+ 757
+ 758
+ 759
+ 760
+ 761
+ 762
+ 763
+ 764
+ 765
+ 766
+ 767
+ 768
+ 769
+ 770
+ 771
+ 772
+ 773
+ 774
+ 775
+ 776
+ 777
+ 778
+ 779
+ 780
+ 781
+ 782
+ 783
+ 784
+ 785
+ 786
+ 787
+ 788
+ 789
+ 790
+ 791
+ 792
+ 793
+ 794
+ 795
+ 796
+ 797
+ 798
+ 799
+ 800
+ 801
+ 802
+ 803
+ 804
+ 805
+ 806
+ 807
+ 808
+ 809
+ 810
+ 811
+ 812
+ 813
+ 814
+ 815
+ 816
+ 817
+ 818
+ 819
+ 820
+ 821
+ 822
+ 823
+ 824
+ 825
+ 826
+ 827
+ 828
+ 829
+ 830
+ 831
+ 832
+ 833
+ 834
+ 835
+ 836
+ 837
+ 838
+ 839
+ 840
+ 841
+ 842
+ 843
+ 844
+ 845
+ 846
+ 847
+ 848
+ 849
+ 850
+ 851
+ 852
+ 853
+ 854
+ 855
+ 856
+ 857
+ 858
+ 859
+ 860
+ 861
+ 862
+ 863
+ 864
+ 865
+ 866
+ 867
+ 868
+ 869
+ 870
+ 871
+ 872
+ 873
+ 874
+ 875
+ 876
+ 877
+ 878
+ 879
+ 880
+ 881
+ 882
+ 883
+ 884
+ 885
+ 886
+ 887
+ 888
+ 889
+ 890
+ 891
+ 892
+ 893
+ 894
+ 895
+ 896
+ 897
+ 898
+ 899
+ 900
+ 901
+ 902
+ 903
+ 904
+ 905
+ 906
+ 907
+ 908
+ 909
+ 910
+ 911
+ 912
+ 913
+ 914
+ 915
+ 916
+ 917
+ 918
+ 919
+ 920
+ 921
+ 922
+ 923
+ 924
+ 925
+ 926
+ 927
+ 928
+ 929
+ 930
+ 931
+ 932
+ 933
+ 934
+ 935
+ 936
+ 937
+ 938
+ 939
+ 940
+ 941
+ 942
+ 943
+ 944
+ 945
+ 946
+ 947
+ 948
+ 949
+ 950
+ 951
+ 952
+ 953
+ 954
+ 955
+ 956
+ 957
+ 958
+ 959
+ 960
+ 961
+ 962
+ 963
+ 964
+ 965
+ 966
+ 967
+ 968
+ 969
+ 970
+ 971
+ 972
+ 973
+ 974
+ 975
+ 976
+ 977
+ 978
+ 979
+ 980
+ 981
+ 982
+ 983
+ 984
+ 985
+ 986
+ 987
+ 988
+ 989
+ 990
+ 991
+ 992
+ 993
+ 994
+ 995
+ 996
+ 997
+ 998
+ 999
+1000
+1001
+1002
+1003
+1004
+1005
+1006
+1007
+1008
+1009
+1010
+1011
+1012
+1013
+1014
+1015
+1016
+1017
+1018
+1019
+1020
+1021
+1022
+1023
+1024
+1025
+1026
+1027
+1028
+1029
+1030
+1031
+1032
+1033
+1034
+1035
+1036
+1037
+1038
+1039
+1040
+1041
+1042
+1043
+1044
+1045
+1046
+1047
+1048
+1049
+1050
+1051
+1052
+1053
+1054
+1055
+1056
+1057
+1058
+1059
+1060
+1061
+1062
+1063
+1064
+1065
+1066
+1067
+1068
+1069
+1070
+1071
+1072
+1073
+1074
+1075
+1076
+1077
+1078
+1079
+1080
+1081
+1082
+1083
+1084
+1085
+1086
+1087
+1088
+1089
+1090
+1091
+1092
+1093
+1094
+1095
+1096
+1097
+1098
+1099
+1100
+1101
+1102
+1103
+1104
+1105
+1106
+1107
+1108
+1109
+1110
+1111
+1112
+1113
+1114
+1115
+1116
+1117
+1118
+1119
+1120
+1121
+1122
+1123
+1124
+1125
+1126
+1127
+1128
+1129
+1130
+1131
+1132
+1133
+1134
+1135
+1136
+1137
+1138
+1139
+1140
+1141
+1142
+1143
+1144
+1145
+1146
+1147
+1148
+1149
+1150
+1151
+1152
+1153
+1154
+1155
+1156
+1157
+1158
+1159
+1160
+1161
+1162
+1163
+1164
+1165
+1166
+1167
+1168
+1169
+1170
+1171
+1172
+1173
+1174
+1175
+1176
+1177
+1178
+1179
+1180
+1181
+1182
+1183
+1184
+1185
+1186
+1187
+1188
+1189
+1190
+1191
+1192
+1193
+1194
+1195
+1196
+1197
+1198
+1199
+1200
+1201
+1202
+1203
+1204
+1205
+1206
+1207
+1208
+1209
+1210
+1211
+1212
+1213
+1214
+1215
+1216
+1217
+1218
+1219
+1220
+1221
+1222
+1223
+1224
+1225
+1226
+1227
+1228
+1229
+1230
+1231
+1232
+1233
+1234
+1235
+1236
+1237
+1238
+1239
+1240
+1241
+1242
+1243</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
-<a name="line-6"></a><span class="cm"> * Date : 2018-06-29</span>
-<a name="line-7"></a><span class="cm"> * Description : a tool to export images to Twitter social network</span>
+<a name="line-6"></a><span class="cm"> * Date : 2008-09-25</span>
+<a name="line-7"></a><span class="cm"> * Description : a tool to convert RAW file to DNG</span>
<a name="line-8"></a><span class="cm"> *</span>
-<a name="line-9"></a><span class="cm"> * Copyright (C) 2018 by Tarek Talaat &lt;tarektalaat93 at gmail dot com&gt;</span>
-<a name="line-10"></a><span class="cm"> * Copyright (C) 2019 by Thanh Trung Dinh &lt;dinhthanhtrung1996 at gmail dot com&gt;</span>
+<a name="line-9"></a><span class="cm"> * Copyright (C) 2008-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&gt;</span>
+<a name="line-10"></a><span class="cm"> * Copyright (C) 2010-2011 by Jens Mueller &lt;tschenser at gmx dot de&gt;</span>
<a name="line-11"></a><span class="cm"> *</span>
<a name="line-12"></a><span class="cm"> * This program is free software; you can redistribute it</span>
<a name="line-13"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
<a name="line-14"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
<a name="line-15"></a><span class="cm"> * either version 2, or (at your option) any later version.</span>
<a name="line-16"></a><span class="cm"> *</span>
<a name="line-17"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
<a name="line-18"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
-<a name="line-19"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
+<a name="line-19"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
<a name="line-20"></a><span class="cm"> * GNU General Public License for more details.</span>
<a name="line-21"></a><span class="cm"> *</span>
<a name="line-22"></a><span class="cm"> * ============================================================ */</span>
<a name="line-23"></a>
-<a name="line-24"></a><span class="cp">#include</span> <span class="cpf">&quot;twittertalker.h&quot;</span><span class="cp"></span>
+<a name="line-24"></a><span class="cp">#include</span> <span class="cpf">&quot;dngwriter_p.h&quot;</span><span class="cp"></span>
<a name="line-25"></a>
-<a name="line-26"></a><span class="c1">// Qt includes</span>
-<a name="line-27"></a>
-<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;QJsonDocument&gt;</span><span class="cp"></span>
-<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QJsonParseError&gt;</span><span class="cp"></span>
-<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QJsonObject&gt;</span><span class="cp"></span>
-<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QJsonValue&gt;</span><span class="cp"></span>
-<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QJsonArray&gt;</span><span class="cp"></span>
-<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QByteArray&gt;</span><span class="cp"></span>
-<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QUrl&gt;</span><span class="cp"></span>
-<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QUrlQuery&gt;</span><span class="cp"></span>
-<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QList&gt;</span><span class="cp"></span>
-<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&lt;QPair&gt;</span><span class="cp"></span>
-<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&lt;QFileInfo&gt;</span><span class="cp"></span>
-<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&lt;QWidget&gt;</span><span class="cp"></span>
-<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&lt;QSettings&gt;</span><span class="cp"></span>
-<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&lt;QMessageBox&gt;</span><span class="cp"></span>
-<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&lt;QApplication&gt;</span><span class="cp"></span>
-<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&lt;QDesktopServices&gt;</span><span class="cp"></span>
-<a name="line-44"></a><span class="cp">#include</span> <span class="cpf">&lt;QNetworkAccessManager&gt;</span><span class="cp"></span>
-<a name="line-45"></a>
-<a name="line-46"></a><span class="cm">/*</span>
-<a name="line-47"></a><span class="cm">#include &lt;QWebEngineView&gt;</span>
-<a name="line-48"></a><span class="cm">#include &lt;QWebEnginePage&gt;</span>
-<a name="line-49"></a><span class="cm">#include &lt;QWebEngineProfile&gt;</span>
-<a name="line-50"></a><span class="cm">#include &lt;QWebEngineCookieStore&gt;</span>
-<a name="line-51"></a><span class="cm">*/</span>
-<a name="line-52"></a>
-<a name="line-53"></a><span class="c1">// KDE includes</span>
-<a name="line-54"></a>
-<a name="line-55"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
-<a name="line-56"></a>
-<a name="line-57"></a><span class="c1">// Local includes</span>
-<a name="line-58"></a>
-<a name="line-59"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
-<a name="line-60"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_version.h&quot;</span><span class="cp"></span>
-<a name="line-61"></a><span class="cp">#include</span> <span class="cpf">&quot;wstoolutils.h&quot;</span><span class="cp"></span>
-<a name="line-62"></a><span class="cp">#include</span> <span class="cpf">&quot;twitterwindow.h&quot;</span><span class="cp"></span>
-<a name="line-63"></a><span class="cp">#include</span> <span class="cpf">&quot;twitteritem.h&quot;</span><span class="cp"></span>
-<a name="line-64"></a><span class="cp">#include</span> <span class="cpf">&quot;twittermpform.h&quot;</span><span class="cp"></span>
-<a name="line-65"></a><span class="cp">#include</span> <span class="cpf">&quot;previewloadthread.h&quot;</span><span class="cp"></span>
-<a name="line-66"></a><span class="cp">#include</span> <span class="cpf">&quot;o0settingsstore.h&quot;</span><span class="cp"></span>
-<a name="line-67"></a><span class="cp">#include</span> <span class="cpf">&quot;o1requestor.h&quot;</span><span class="cp"></span>
-<a name="line-68"></a>
-<a name="line-69"></a><span class="k">namespace</span> <span class="n">DigikamGenericTwitterPlugin</span>
-<a name="line-70"></a><span class="p">{</span>
-<a name="line-71"></a>
-<a name="line-72"></a><span class="n">QStringList</span> <span class="n">imageFormat</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;jpg,png,gif,webp&quot;</span><span class="p">).</span><span class="n">split</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;,&#39;</span><span class="p">)));</span>
-<a name="line-73"></a>
-<a name="line-74"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">Private</span>
-<a name="line-75"></a><span class="p">{</span>
-<a name="line-76"></a><span class="k">public</span><span class="o">:</span>
-<a name="line-77"></a>
-<a name="line-78"></a> <span class="k">enum</span> <span class="n">State</span>
-<a name="line-79"></a> <span class="p">{</span>
-<a name="line-80"></a> <span class="n">TW_USERNAME</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
-<a name="line-81"></a> <span class="n">TW_LISTFOLDERS</span><span class="p">,</span>
-<a name="line-82"></a> <span class="n">TW_CREATEFOLDER</span><span class="p">,</span>
-<a name="line-83"></a> <span class="n">TW_ADDPHOTO</span><span class="p">,</span>
-<a name="line-84"></a> <span class="n">TW_CREATETWEET</span><span class="p">,</span>
-<a name="line-85"></a> <span class="n">TW_UPLOADINIT</span><span class="p">,</span>
-<a name="line-86"></a> <span class="n">TW_UPLOADAPPEND</span><span class="p">,</span>
-<a name="line-87"></a> <span class="n">TW_UPLOADSTATUSCHECK</span><span class="p">,</span>
-<a name="line-88"></a> <span class="n">TW_UPLOADFINALIZE</span>
-<a name="line-89"></a> <span class="p">};</span>
-<a name="line-90"></a>
-<a name="line-91"></a><span class="k">public</span><span class="o">:</span>
-<a name="line-92"></a>
-<a name="line-93"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
-<a name="line-94"></a> <span class="o">:</span> <span class="n">clientId</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;lkRgRsucipXsUEvKh0ECblreC&quot;</span><span class="p">)),</span>
-<a name="line-95"></a> <span class="n">clientSecret</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;6EThTiPQHZTMo7F83iLHrfNO89fkDVvM9hVWaYH9D49xEOyMBe&quot;</span><span class="p">)),</span>
-<a name="line-96"></a> <span class="n">authUrl</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://api.twitter.com/oauth/authenticate&quot;</span><span class="p">)),</span>
-<a name="line-97"></a> <span class="n">requestTokenUrl</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://api.twitter.com/oauth/request_token&quot;</span><span class="p">)),</span>
-<a name="line-98"></a> <span class="n">accessTokenUrl</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://api.twitter.com/oauth/access_token&quot;</span><span class="p">)),</span>
-<a name="line-99"></a><span class="cm">/*</span>
-<a name="line-100"></a><span class="cm"> scope(QLatin1String(&quot;User.Read Files.ReadWrite&quot;)),</span>
-<a name="line-101"></a><span class="cm">*/</span>
-<a name="line-102"></a> <span class="n">redirectUrl</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;http://127.0.0.1:8000&quot;</span><span class="p">)),</span>
-<a name="line-103"></a> <span class="n">uploadUrl</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://upload.twitter.com/1.1/media/upload.json&quot;</span><span class="p">)),</span>
-<a name="line-104"></a> <span class="n">segmentIndex</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
-<a name="line-105"></a> <span class="n">parent</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-106"></a> <span class="n">netMngr</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-107"></a> <span class="n">reply</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-108"></a> <span class="n">state</span><span class="p">(</span><span class="n">TW_USERNAME</span><span class="p">),</span>
-<a name="line-109"></a> <span class="n">settings</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-110"></a> <span class="n">o1Twitter</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-111"></a> <span class="n">requestor</span><span class="p">(</span><span class="k">nullptr</span><span class="p">)</span>
-<a name="line-112"></a> <span class="p">{</span>
-<a name="line-113"></a> <span class="p">}</span>
-<a name="line-114"></a>
-<a name="line-115"></a><span class="k">public</span><span class="o">:</span>
-<a name="line-116"></a>
-<a name="line-117"></a> <span class="n">QString</span> <span class="n">clientId</span><span class="p">;</span>
-<a name="line-118"></a> <span class="n">QString</span> <span class="n">clientSecret</span><span class="p">;</span>
-<a name="line-119"></a> <span class="n">QString</span> <span class="n">authUrl</span><span class="p">;</span>
-<a name="line-120"></a> <span class="n">QString</span> <span class="n">requestTokenUrl</span><span class="p">;</span>
-<a name="line-121"></a> <span class="n">QString</span> <span class="n">accessTokenUrl</span><span class="p">;</span>
-<a name="line-122"></a> <span class="n">QString</span> <span class="n">scope</span><span class="p">;</span>
-<a name="line-123"></a> <span class="n">QString</span> <span class="n">redirectUrl</span><span class="p">;</span>
-<a name="line-124"></a> <span class="n">QString</span> <span class="n">accessToken</span><span class="p">;</span>
-<a name="line-125"></a> <span class="n">QString</span> <span class="n">uploadUrl</span><span class="p">;</span>
-<a name="line-126"></a> <span class="n">QString</span> <span class="n">mediaUploadedPath</span><span class="p">;</span>
-<a name="line-127"></a> <span class="n">QString</span> <span class="n">mediaId</span><span class="p">;</span>
-<a name="line-128"></a>
-<a name="line-129"></a> <span class="kt">int</span> <span class="n">segmentIndex</span><span class="p">;</span>
-<a name="line-130"></a>
-<a name="line-131"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="n">parent</span><span class="p">;</span>
-<a name="line-132"></a>
-<a name="line-133"></a> <span class="n">QNetworkAccessManager</span><span class="o">*</span> <span class="n">netMngr</span><span class="p">;</span>
-<a name="line-134"></a>
-<a name="line-135"></a> <span class="n">QNetworkReply</span><span class="o">*</span> <span class="n">reply</span><span class="p">;</span>
-<a name="line-136"></a>
-<a name="line-137"></a> <span class="n">State</span> <span class="n">state</span><span class="p">;</span>
-<a name="line-138"></a>
-<a name="line-139"></a> <span class="n">DMetadata</span> <span class="n">meta</span><span class="p">;</span>
-<a name="line-140"></a>
-<a name="line-141"></a> <span class="n">QMap</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">urlParametersMap</span><span class="p">;</span>
-<a name="line-142"></a><span class="cm">/*</span>
-<a name="line-143"></a><span class="cm"> QWebEngineView* view;</span>
-<a name="line-144"></a><span class="cm">*/</span>
-<a name="line-145"></a> <span class="n">QSettings</span><span class="o">*</span> <span class="n">settings</span><span class="p">;</span>
-<a name="line-146"></a>
-<a name="line-147"></a> <span class="n">O1Twitter</span><span class="o">*</span> <span class="n">o1Twitter</span><span class="p">;</span>
-<a name="line-148"></a> <span class="n">O1Requestor</span><span class="o">*</span> <span class="n">requestor</span><span class="p">;</span>
-<a name="line-149"></a><span class="p">};</span>
-<a name="line-150"></a>
-<a name="line-151"></a><span class="n">TwTalker</span><span class="o">::</span><span class="n">TwTalker</span><span class="p">(</span><span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span><span class="p">)</span>
-<a name="line-152"></a> <span class="o">:</span> <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">Private</span><span class="p">)</span>
-<a name="line-153"></a><span class="p">{</span>
-<a name="line-154"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span><span class="p">;</span>
-<a name="line-155"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QNetworkAccessManager</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
-<a name="line-156"></a>
-<a name="line-157"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">finished</span><span class="p">(</span><span class="n">QNetworkReply</span><span class="o">*</span><span class="p">)),</span>
-<a name="line-158"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotFinished</span><span class="p">(</span><span class="n">QNetworkReply</span><span class="o">*</span><span class="p">)));</span>
-<a name="line-159"></a>
-<a name="line-160"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">o1Twitter</span> <span class="o">=</span> <span class="k">new</span> <span class="n">O1Twitter</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
-<a name="line-161"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">o1Twitter</span><span class="o">-&gt;</span><span class="n">setClientId</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">clientId</span><span class="p">);</span>
-<a name="line-162"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">o1Twitter</span><span class="o">-&gt;</span><span class="n">setClientSecret</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">clientSecret</span><span class="p">);</span>
-<a name="line-163"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">o1Twitter</span><span class="o">-&gt;</span><span class="n">setLocalPort</span><span class="p">(</span><span class="mi">8000</span><span class="p">);</span>
-<a name="line-164"></a>
-<a name="line-165"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestor</span> <span class="o">=</span> <span class="k">new</span> <span class="n">O1Requestor</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">o1Twitter</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-166"></a>
-<a name="line-167"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span> <span class="o">=</span> <span class="n">WSToolUtils</span><span class="o">::</span><span class="n">getOauthSettings</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
-<a name="line-168"></a> <span class="n">O0SettingsStore</span><span class="o">*</span> <span class="k">const</span> <span class="n">store</span> <span class="o">=</span> <span class="k">new</span> <span class="n">O0SettingsStore</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="n">O2_ENCRYPTION_KEY</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-169"></a> <span class="n">store</span><span class="o">-&gt;</span><span class="n">setGroupKey</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Twitter&quot;</span><span class="p">));</span>
-<a name="line-170"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">o1Twitter</span><span class="o">-&gt;</span><span class="n">setStore</span><span class="p">(</span><span class="n">store</span><span class="p">);</span>
-<a name="line-171"></a>
-<a name="line-172"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">o1Twitter</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">linkingFailed</span><span class="p">()),</span>
-<a name="line-173"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotLinkingFailed</span><span class="p">()));</span>
-<a name="line-174"></a>
-<a name="line-175"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">o1Twitter</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">linkingSucceeded</span><span class="p">()),</span>
-<a name="line-176"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotLinkingSucceeded</span><span class="p">()));</span>
-<a name="line-177"></a>
-<a name="line-178"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">o1Twitter</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">openBrowser</span><span class="p">(</span><span class="n">QUrl</span><span class="p">)),</span>
-<a name="line-179"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotOpenBrowser</span><span class="p">(</span><span class="n">QUrl</span><span class="p">)));</span>
-<a name="line-180"></a><span class="p">}</span>
-<a name="line-181"></a>
-<a name="line-182"></a><span class="n">TwTalker</span><span class="o">::~</span><span class="n">TwTalker</span><span class="p">()</span>
-<a name="line-183"></a><span class="p">{</span>
-<a name="line-184"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
-<a name="line-185"></a> <span class="p">{</span>
-<a name="line-186"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">abort</span><span class="p">();</span>
-<a name="line-187"></a> <span class="p">}</span>
-<a name="line-188"></a>
-<a name="line-189"></a> <span class="n">WSToolUtils</span><span class="o">::</span><span class="n">removeTemporaryDir</span><span class="p">(</span><span class="s">&quot;twitter&quot;</span><span class="p">);</span>
+<a name="line-26"></a><span class="k">namespace</span> <span class="n">Digikam</span>
+<a name="line-27"></a><span class="p">{</span>
+<a name="line-28"></a>
+<a name="line-29"></a><span class="kt">int</span> <span class="n">DNGWriter</span><span class="o">::</span><span class="n">convert</span><span class="p">()</span>
+<a name="line-30"></a><span class="p">{</span>
+<a name="line-31"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cancel</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-32"></a>
+<a name="line-33"></a> <span class="k">try</span>
+<a name="line-34"></a> <span class="p">{</span>
+<a name="line-35"></a> <span class="k">if</span> <span class="p">(</span><span class="n">inputFile</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-36"></a> <span class="p">{</span>
+<a name="line-37"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: No input file to convert. Aborted...&quot;</span> <span class="p">;</span>
+<a name="line-38"></a> <span class="k">return</span> <span class="n">PROCESSFAILED</span><span class="p">;</span>
+<a name="line-39"></a> <span class="p">}</span>
+<a name="line-40"></a>
+<a name="line-41"></a> <span class="n">QFileInfo</span> <span class="n">inputInfo</span><span class="p">(</span><span class="n">inputFile</span><span class="p">());</span>
+<a name="line-42"></a> <span class="n">QString</span> <span class="n">dngFilePath</span> <span class="o">=</span> <span class="n">outputFile</span><span class="p">();</span>
+<a name="line-43"></a>
+<a name="line-44"></a> <span class="k">if</span> <span class="p">(</span><span class="n">dngFilePath</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-45"></a> <span class="p">{</span>
+<a name="line-46"></a> <span class="n">dngFilePath</span> <span class="o">=</span> <span class="n">QString</span><span class="p">(</span><span class="n">inputInfo</span><span class="p">.</span><span class="n">completeBaseName</span><span class="p">()</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;.dng&quot;</span><span class="p">));</span>
+<a name="line-47"></a> <span class="p">}</span>
+<a name="line-48"></a>
+<a name="line-49"></a> <span class="n">QFileInfo</span> <span class="n">outputInfo</span><span class="p">(</span><span class="n">dngFilePath</span><span class="p">);</span>
+<a name="line-50"></a> <span class="n">QByteArray</span> <span class="n">rawData</span><span class="p">;</span>
+<a name="line-51"></a> <span class="n">DRawInfo</span> <span class="n">identify</span><span class="p">;</span>
+<a name="line-52"></a> <span class="n">DRawInfo</span> <span class="n">identifyMake</span><span class="p">;</span>
+<a name="line-53"></a>
+<a name="line-54"></a> <span class="c1">// -----------------------------------------------------------------------------------------</span>
+<a name="line-55"></a>
+<a name="line-56"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Loading RAW data from &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">inputInfo</span><span class="p">.</span><span class="n">fileName</span><span class="p">()</span> <span class="p">;</span>
+<a name="line-57"></a>
+<a name="line-58"></a> <span class="n">DRawDecoder</span> <span class="n">rawProcessor</span><span class="p">;</span>
+<a name="line-59"></a>
+<a name="line-60"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">rawProcessor</span><span class="p">.</span><span class="n">rawFileIdentify</span><span class="p">(</span><span class="n">identifyMake</span><span class="p">,</span> <span class="n">inputFile</span><span class="p">()))</span>
+<a name="line-61"></a> <span class="p">{</span>
+<a name="line-62"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Reading RAW file failed. Aborted...&quot;</span> <span class="p">;</span>
+<a name="line-63"></a> <span class="k">return</span> <span class="n">PROCESSFAILED</span><span class="p">;</span>
+<a name="line-64"></a> <span class="p">}</span>
+<a name="line-65"></a>
+<a name="line-66"></a> <span class="n">dng_rect</span> <span class="n">activeArea</span><span class="p">;</span>
+<a name="line-67"></a>
+<a name="line-68"></a> <span class="c1">// TODO: need to get correct default crop size to avoid artifacts at the borders</span>
+<a name="line-69"></a>
+<a name="line-70"></a> <span class="kt">int</span> <span class="n">activeWidth</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-71"></a> <span class="kt">int</span> <span class="n">activeHeight</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-72"></a> <span class="kt">int</span> <span class="n">outputHeight</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-73"></a> <span class="kt">int</span> <span class="n">outputWidth</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-74"></a>
+<a name="line-75"></a> <span class="k">if</span> <span class="p">((</span><span class="n">identifyMake</span><span class="p">.</span><span class="n">orientation</span> <span class="o">==</span> <span class="mi">5</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">identifyMake</span><span class="p">.</span><span class="n">orientation</span> <span class="o">==</span> <span class="mi">6</span><span class="p">))</span>
+<a name="line-76"></a> <span class="p">{</span>
+<a name="line-77"></a> <span class="n">outputHeight</span> <span class="o">=</span> <span class="n">identifyMake</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">width</span><span class="p">();</span>
+<a name="line-78"></a> <span class="n">outputWidth</span> <span class="o">=</span> <span class="n">identifyMake</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
+<a name="line-79"></a> <span class="p">}</span>
+<a name="line-80"></a> <span class="k">else</span>
+<a name="line-81"></a> <span class="p">{</span>
+<a name="line-82"></a> <span class="n">outputHeight</span> <span class="o">=</span> <span class="n">identifyMake</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
+<a name="line-83"></a> <span class="n">outputWidth</span> <span class="o">=</span> <span class="n">identifyMake</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">width</span><span class="p">();</span>
+<a name="line-84"></a> <span class="p">}</span>
+<a name="line-85"></a>
+<a name="line-86"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">rawProcessor</span><span class="p">.</span><span class="n">extractRAWData</span><span class="p">(</span><span class="n">inputFile</span><span class="p">(),</span> <span class="n">rawData</span><span class="p">,</span> <span class="n">identify</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
+<a name="line-87"></a> <span class="p">{</span>
+<a name="line-88"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Loading RAW data failed. Aborted...&quot;</span> <span class="p">;</span>
+<a name="line-89"></a> <span class="k">return</span> <span class="n">FILENOTSUPPORTED</span><span class="p">;</span>
+<a name="line-90"></a> <span class="p">}</span>
+<a name="line-91"></a>
+<a name="line-92"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">)</span>
+<a name="line-93"></a> <span class="p">{</span>
+<a name="line-94"></a> <span class="k">return</span> <span class="n">PROCESSCANCELED</span><span class="p">;</span>
+<a name="line-95"></a> <span class="p">}</span>
+<a name="line-96"></a>
+<a name="line-97"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Raw data loaded:&quot;</span> <span class="p">;</span>
+<a name="line-98"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- Data Size: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">rawData</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; bytes&quot;</span><span class="p">;</span>
+<a name="line-99"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- Date: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">dateTime</span><span class="p">.</span><span class="n">toString</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">ISODate</span><span class="p">);</span>
+<a name="line-100"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- Make: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">make</span><span class="p">;</span>
+<a name="line-101"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- Model: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">model</span><span class="p">;</span>
+<a name="line-102"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- ImageSize: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">imageSize</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;x&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">imageSize</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
+<a name="line-103"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- FullSize: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">fullSize</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;x&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">fullSize</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
+<a name="line-104"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- OutputSize: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;x&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
+<a name="line-105"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- Orientation: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">orientation</span><span class="p">;</span>
+<a name="line-106"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- Top margin: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">topMargin</span><span class="p">;</span>
+<a name="line-107"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- Left margin: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">leftMargin</span><span class="p">;</span>
+<a name="line-108"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- Filter: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span><span class="p">;</span>
+<a name="line-109"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- Colors: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">rawColors</span><span class="p">;</span>
+<a name="line-110"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- Black: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">blackPoint</span><span class="p">;</span>
+<a name="line-111"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- White: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">whitePoint</span><span class="p">;</span>
+<a name="line-112"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- CAM-&gt;XYZ:&quot;</span> <span class="p">;</span>
+<a name="line-113"></a>
+<a name="line-114"></a> <span class="n">QString</span> <span class="n">matrixVal</span><span class="p">;</span>
+<a name="line-115"></a>
+<a name="line-116"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">4</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-117"></a> <span class="p">{</span>
+<a name="line-118"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; &quot;</span>
+<a name="line-119"></a> <span class="o">&lt;&lt;</span> <span class="n">QString</span><span class="p">().</span><span class="n">asprintf</span><span class="p">(</span><span class="s">&quot;%03.4f %03.4f %03.4f&quot;</span><span class="p">,</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span>
+<a name="line-120"></a> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">1</span><span class="p">],</span>
+<a name="line-121"></a> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">2</span><span class="p">]);</span>
+<a name="line-122"></a> <span class="p">}</span>
+<a name="line-123"></a>
+<a name="line-124"></a> <span class="c1">// Check if CFA layout is supported by DNG SDK.</span>
+<a name="line-125"></a>
+<a name="line-126"></a> <span class="n">Private</span><span class="o">::</span><span class="n">DNGBayerPattern</span> <span class="n">bayerPattern</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">Unknown</span><span class="p">;</span>
+<a name="line-127"></a> <span class="n">uint32</span> <span class="n">filter</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-128"></a> <span class="kt">bool</span> <span class="n">fujiRotate90</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-129"></a>
+<a name="line-130"></a> <span class="c1">// Standard bayer layouts</span>
+<a name="line-131"></a>
+<a name="line-132"></a> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;GRBGGRBGGRBGGRBG&quot;</span><span class="p">))</span>
+<a name="line-133"></a> <span class="p">{</span>
+<a name="line-134"></a> <span class="n">bayerPattern</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">Standard</span><span class="p">;</span>
+<a name="line-135"></a> <span class="n">filter</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-136"></a> <span class="p">}</span>
+<a name="line-137"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;RGGBRGGBRGGBRGGB&quot;</span><span class="p">))</span>
+<a name="line-138"></a> <span class="p">{</span>
+<a name="line-139"></a> <span class="n">bayerPattern</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">Standard</span><span class="p">;</span>
+<a name="line-140"></a> <span class="n">filter</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+<a name="line-141"></a> <span class="p">}</span>
+<a name="line-142"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;BGGRBGGRBGGRBGGR&quot;</span><span class="p">))</span>
+<a name="line-143"></a> <span class="p">{</span>
+<a name="line-144"></a> <span class="n">bayerPattern</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">Standard</span><span class="p">;</span>
+<a name="line-145"></a> <span class="n">filter</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
+<a name="line-146"></a> <span class="p">}</span>
+<a name="line-147"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;GBRGGBRGGBRGGBRG&quot;</span><span class="p">))</span>
+<a name="line-148"></a> <span class="p">{</span>
+<a name="line-149"></a> <span class="n">bayerPattern</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">Standard</span><span class="p">;</span>
+<a name="line-150"></a> <span class="n">filter</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
+<a name="line-151"></a> <span class="p">}</span>
+<a name="line-152"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;RGBGRGBGRGBGRGBG&quot;</span><span class="p">))</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">identifyMake</span><span class="p">.</span><span class="n">make</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;FUJIFILM&quot;</span><span class="p">)))</span>
+<a name="line-153"></a> <span class="p">{</span>
+<a name="line-154"></a> <span class="c1">// Fuji layouts</span>
+<a name="line-155"></a>
+<a name="line-156"></a> <span class="n">bayerPattern</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">Fuji</span><span class="p">;</span>
+<a name="line-157"></a> <span class="n">fujiRotate90</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-158"></a> <span class="n">filter</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-159"></a> <span class="p">}</span>
+<a name="line-160"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;RBGGBRGGRBGGBRGG&quot;</span><span class="p">))</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">identifyMake</span><span class="p">.</span><span class="n">make</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;FUJIFILM&quot;</span><span class="p">)))</span>
+<a name="line-161"></a> <span class="p">{</span>
+<a name="line-162"></a> <span class="c1">// Fuji layouts</span>
+<a name="line-163"></a>
+<a name="line-164"></a> <span class="n">bayerPattern</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">Fuji</span><span class="p">;</span>
+<a name="line-165"></a> <span class="n">fujiRotate90</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-166"></a> <span class="n">filter</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-167"></a> <span class="p">}</span>
+<a name="line-168"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">identify</span><span class="p">.</span><span class="n">rawColors</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+<a name="line-169"></a> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="o">&amp;&amp;</span>
+<a name="line-170"></a><span class="cm">/*</span>
+<a name="line-171"></a><span class="cm"> (identify.filterPattern == QString(&quot;&quot;)) &amp;&amp;</span>
+<a name="line-172"></a><span class="cm">*/</span>
+<a name="line-173"></a> <span class="p">((</span><span class="n">uint32</span><span class="p">)</span><span class="n">rawData</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">==</span> <span class="n">identify</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">*</span> <span class="n">identify</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">*</span> <span class="mi">3</span> <span class="o">*</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">uint16</span><span class="p">)))</span>
+<a name="line-174"></a> <span class="p">{</span>
+<a name="line-175"></a> <span class="n">bayerPattern</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">LinearRaw</span><span class="p">;</span>
+<a name="line-176"></a> <span class="p">}</span>
+<a name="line-177"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">rawColors</span> <span class="o">==</span> <span class="mi">4</span><span class="p">)</span> <span class="c1">// Four color sensors</span>
+<a name="line-178"></a> <span class="p">{</span>
+<a name="line-179"></a> <span class="n">bayerPattern</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">FourColor</span><span class="p">;</span>
+<a name="line-180"></a>
+<a name="line-181"></a> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span><span class="p">.</span><span class="n">length</span><span class="p">()</span> <span class="o">!=</span> <span class="mi">16</span><span class="p">)</span>
+<a name="line-182"></a> <span class="p">{</span>
+<a name="line-183"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Bayer mosaic not supported. Aborted...&quot;</span> <span class="p">;</span>
+<a name="line-184"></a> <span class="k">return</span> <span class="n">FILENOTSUPPORTED</span><span class="p">;</span>
+<a name="line-185"></a> <span class="p">}</span>
+<a name="line-186"></a>
+<a name="line-187"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">16</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-188"></a> <span class="p">{</span>
+<a name="line-189"></a> <span class="n">filter</span> <span class="o">=</span> <span class="n">filter</span> <span class="o">&gt;&gt;</span> <span class="mi">2</span><span class="p">;</span>
<a name="line-190"></a>
-<a name="line-191"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
-<a name="line-192"></a><span class="p">}</span>
-<a name="line-193"></a>
-<a name="line-194"></a><span class="kt">void</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">link</span><span class="p">()</span>
-<a name="line-195"></a><span class="p">{</span>
-<a name="line-196"></a><span class="cm">/*</span>
-<a name="line-197"></a><span class="cm"> emit signalBusy(true);</span>
-<a name="line-198"></a><span class="cm"> QUrl url(d-&gt;requestTokenUrl);</span>
-<a name="line-199"></a><span class="cm"> QNetworkRequest netRequest(url);</span>
-<a name="line-200"></a><span class="cm"> netRequest.setHeader(QNetworkRequest::ContentTypeHeader, QLatin1String(&quot;application/json&quot;));</span>
-<a name="line-201"></a><span class="cm"> netRequest.setRawHeader(&quot;Authorization&quot;, QString::fromLatin1(&quot;OAuth oauth_callback= \&quot;%1\&quot;&quot;).arg(d-&gt;redirectUrl).toUtf8());</span>
-<a name="line-202"></a><span class="cm"> QNetworkAccessManager requestMngr;</span>
-<a name="line-203"></a><span class="cm"> QNetworkReply* reply;</span>
-<a name="line-204"></a><span class="cm"> reply = requestMngr.post(netRequest);</span>
-<a name="line-205"></a>
-<a name="line-206"></a><span class="cm"> if (reply-&gt;error() != QNetworkReply::NoError){</span>
-<a name="line-207"></a>
-<a name="line-208"></a><span class="cm"> }</span>
-<a name="line-209"></a>
-<a name="line-210"></a><span class="cm"> QByteArray buffer;</span>
-<a name="line-211"></a><span class="cm"> buffer.append(reply-&gt;readAll());</span>
-<a name="line-212"></a><span class="cm"> QString response = fromLatin1(buffer);</span>
-<a name="line-213"></a>
-<a name="line-214"></a><span class="cm"> QMap&lt;QString, QString&gt; headers;</span>
-<a name="line-215"></a>
-<a name="line-216"></a><span class="cm"> // Discard the first line</span>
-<a name="line-217"></a><span class="cm"> response = response.mid(response.indexOf(&#39;\n&#39;) + 1).trimmed();</span>
-<a name="line-218"></a>
-<a name="line-219"></a><span class="cm"> foreach (QString line, response.split(&#39;\n&#39;))</span>
-<a name="line-220"></a><span class="cm"> {</span>
-<a name="line-221"></a><span class="cm"> int colon = line.indexOf(&#39;:&#39;);</span>
-<a name="line-222"></a><span class="cm"> QString headerName = line.left(colon).trimmed();</span>
-<a name="line-223"></a><span class="cm"> QString headerValue = line.mid(colon + 1).trimmed();</span>
-<a name="line-224"></a>
-<a name="line-225"></a><span class="cm"> headers.insertMulti(headerName, headerValue);</span>
-<a name="line-226"></a><span class="cm"> }</span>
+<a name="line-191"></a> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;G&#39;</span><span class="p">))</span>
+<a name="line-192"></a> <span class="p">{</span>
+<a name="line-193"></a> <span class="n">filter</span> <span class="o">|=</span> <span class="mh">0x00000000</span><span class="p">;</span>
+<a name="line-194"></a> <span class="p">}</span>
+<a name="line-195"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;M&#39;</span><span class="p">))</span>
+<a name="line-196"></a> <span class="p">{</span>
+<a name="line-197"></a> <span class="n">filter</span> <span class="o">|=</span> <span class="mh">0x40000000</span><span class="p">;</span>
+<a name="line-198"></a> <span class="p">}</span>
+<a name="line-199"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;C&#39;</span><span class="p">))</span>
+<a name="line-200"></a> <span class="p">{</span>
+<a name="line-201"></a> <span class="n">filter</span> <span class="o">|=</span> <span class="mh">0x80000000</span><span class="p">;</span>
+<a name="line-202"></a> <span class="p">}</span>
+<a name="line-203"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;Y&#39;</span><span class="p">))</span>
+<a name="line-204"></a> <span class="p">{</span>
+<a name="line-205"></a> <span class="n">filter</span> <span class="o">|=</span> <span class="mh">0xC0000000</span><span class="p">;</span>
+<a name="line-206"></a> <span class="p">}</span>
+<a name="line-207"></a> <span class="k">else</span>
+<a name="line-208"></a> <span class="p">{</span>
+<a name="line-209"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Bayer mosaic not supported. Aborted...&quot;</span> <span class="p">;</span>
+<a name="line-210"></a> <span class="k">return</span> <span class="n">FILENOTSUPPORTED</span><span class="p">;</span>
+<a name="line-211"></a> <span class="p">}</span>
+<a name="line-212"></a> <span class="p">}</span>
+<a name="line-213"></a> <span class="p">}</span>
+<a name="line-214"></a> <span class="k">else</span>
+<a name="line-215"></a> <span class="p">{</span>
+<a name="line-216"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Bayer mosaic not supported. Aborted...&quot;</span> <span class="p">;</span>
+<a name="line-217"></a> <span class="k">return</span> <span class="n">FILENOTSUPPORTED</span><span class="p">;</span>
+<a name="line-218"></a> <span class="p">}</span>
+<a name="line-219"></a>
+<a name="line-220"></a> <span class="k">if</span> <span class="p">(</span><span class="n">fujiRotate90</span><span class="p">)</span>
+<a name="line-221"></a> <span class="p">{</span>
+<a name="line-222"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fujiRotate</span><span class="p">(</span><span class="n">rawData</span><span class="p">,</span> <span class="n">identify</span><span class="p">))</span>
+<a name="line-223"></a> <span class="p">{</span>
+<a name="line-224"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Can not rotate fuji image. Aborted...&quot;</span><span class="p">;</span>
+<a name="line-225"></a> <span class="k">return</span> <span class="n">PROCESSFAILED</span><span class="p">;</span>
+<a name="line-226"></a> <span class="p">}</span>
<a name="line-227"></a>
-<a name="line-228"></a><span class="cm"> QString oauthToken = headers[oauth_token];</span>
-<a name="line-229"></a><span class="cm"> QSting oauthTokenSecret = headers[oauth_token_secret];</span>
-<a name="line-230"></a>
-<a name="line-231"></a><span class="cm"> QUrlQuery query(url);</span>
-<a name="line-232"></a><span class="cm"> query.addQueryItem(QLatin1String(&quot;client_id&quot;), d-&gt;clientId);</span>
-<a name="line-233"></a><span class="cm"> query.addQueryItem(QLatin1String(&quot;scope&quot;), d-&gt;scope);</span>
-<a name="line-234"></a><span class="cm"> query.addQueryItem(QLatin1String(&quot;redirect_uri&quot;), d-&gt;redirectUrl);</span>
-<a name="line-235"></a><span class="cm"> query.addQueryItem(QLatin1String(&quot;response_type&quot;), &quot;token&quot;);</span>
-<a name="line-236"></a><span class="cm"> url.setQuery(query);</span>
-<a name="line-237"></a>
-<a name="line-238"></a><span class="cm"> d-&gt;view = new QWebEngineView(d-&gt;parent);</span>
-<a name="line-239"></a><span class="cm"> d-&gt;view-&gt;setWindowFlags(Qt::Dialog);</span>
-<a name="line-240"></a><span class="cm"> d-&gt;view-&gt;load(url);</span>
-<a name="line-241"></a><span class="cm"> d-&gt;view-&gt;show();</span>
-<a name="line-242"></a>
-<a name="line-243"></a><span class="cm"> connect(d-&gt;view, SIGNAL(urlChanged(QUrl)),</span>
-<a name="line-244"></a><span class="cm"> this, SLOT(slotCatchUrl(QUrl)));</span>
-<a name="line-245"></a><span class="cm">*/</span>
-<a name="line-246"></a>
-<a name="line-247"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-248"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">o1Twitter</span><span class="o">-&gt;</span><span class="n">link</span><span class="p">();</span>
-<a name="line-249"></a><span class="p">}</span>
+<a name="line-228"></a> <span class="kt">int</span> <span class="n">tmp</span> <span class="o">=</span> <span class="n">outputWidth</span><span class="p">;</span>
+<a name="line-229"></a> <span class="n">outputWidth</span> <span class="o">=</span> <span class="n">outputHeight</span><span class="p">;</span>
+<a name="line-230"></a> <span class="n">outputHeight</span> <span class="o">=</span> <span class="n">tmp</span><span class="p">;</span>
+<a name="line-231"></a> <span class="p">}</span>
+<a name="line-232"></a>
+<a name="line-233"></a> <span class="n">activeArea</span> <span class="o">=</span> <span class="n">dng_rect</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">height</span><span class="p">(),</span> <span class="n">identify</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">width</span><span class="p">());</span>
+<a name="line-234"></a> <span class="n">activeWidth</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">width</span><span class="p">();</span>
+<a name="line-235"></a> <span class="n">activeHeight</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
+<a name="line-236"></a>
+<a name="line-237"></a> <span class="c1">// Check if number of Raw Color components is supported.</span>
+<a name="line-238"></a>
+<a name="line-239"></a> <span class="k">if</span> <span class="p">((</span><span class="n">identify</span><span class="p">.</span><span class="n">rawColors</span> <span class="o">!=</span> <span class="mi">3</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">rawColors</span> <span class="o">!=</span> <span class="mi">4</span><span class="p">))</span>
+<a name="line-240"></a> <span class="p">{</span>
+<a name="line-241"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Number of Raw color components not supported. Aborted...&quot;</span> <span class="p">;</span>
+<a name="line-242"></a> <span class="k">return</span> <span class="n">PROCESSFAILED</span><span class="p">;</span>
+<a name="line-243"></a> <span class="p">}</span>
+<a name="line-244"></a>
+<a name="line-245"></a> <span class="kt">int</span> <span class="n">width</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">width</span><span class="p">();</span>
+<a name="line-246"></a> <span class="kt">int</span> <span class="n">height</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
+<a name="line-247"></a>
+<a name="line-248"></a><span class="cm">/*</span>
+<a name="line-249"></a><span class="cm"> // NOTE: code to hack RAW data extraction</span>
<a name="line-250"></a>
-<a name="line-251"></a><span class="kt">void</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">unLink</span><span class="p">()</span>
-<a name="line-252"></a><span class="p">{</span>
-<a name="line-253"></a><span class="cm">/*</span>
-<a name="line-254"></a><span class="cm"> d-&gt;accessToken = QString();</span>
-<a name="line-255"></a><span class="cm"> d-&gt;view-&gt;page()-&gt;profile()-&gt;cookieStore()-&gt;deleteAllCookies();</span>
-<a name="line-256"></a><span class="cm"> emit oneDriveLinkingSucceeded();</span>
-<a name="line-257"></a><span class="cm">*/</span>
-<a name="line-258"></a>
-<a name="line-259"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">o1Twitter</span><span class="o">-&gt;</span><span class="n">unlink</span><span class="p">();</span>
-<a name="line-260"></a>
-<a name="line-261"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">beginGroup</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Twitter&quot;</span><span class="p">));</span>
-<a name="line-262"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">remove</span><span class="p">(</span><span class="n">QString</span><span class="p">());</span>
-<a name="line-263"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">endGroup</span><span class="p">();</span>
-<a name="line-264"></a><span class="p">}</span>
+<a name="line-251"></a><span class="cm"> QString rawdataFilePath(inputInfo.completeBaseName() + QString(&quot;.dat&quot;));</span>
+<a name="line-252"></a><span class="cm"> QFileInfo rawdataInfo(rawdataFilePath);</span>
+<a name="line-253"></a>
+<a name="line-254"></a><span class="cm"> QFile rawdataFile(rawdataFilePath);</span>
+<a name="line-255"></a><span class="cm"> if (!rawdataFile.open(QIODevice::WriteOnly))</span>
+<a name="line-256"></a><span class="cm"> {</span>
+<a name="line-257"></a><span class="cm"> qCDebug(DIGIKAM_GENERAL_LOG) &lt;&lt; &quot;DNGWriter: Cannot open file to write RAW data. Aborted...&quot; ;</span>
+<a name="line-258"></a><span class="cm"> return PROCESSFAILED;</span>
+<a name="line-259"></a><span class="cm"> }</span>
+<a name="line-260"></a><span class="cm"> QDataStream rawdataStream(&amp;rawdataFile);</span>
+<a name="line-261"></a><span class="cm"> rawdataStream.writeRawData(rawData.data(), rawData.size());</span>
+<a name="line-262"></a><span class="cm"> rawdataFile.close();</span>
+<a name="line-263"></a><span class="cm">*/</span>
+<a name="line-264"></a> <span class="c1">// -----------------------------------------------------------------------------------------</span>
<a name="line-265"></a>
-<a name="line-266"></a><span class="kt">void</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">slotOpenBrowser</span><span class="p">(</span><span class="k">const</span> <span class="n">QUrl</span><span class="o">&amp;</span> <span class="n">url</span><span class="p">)</span>
-<a name="line-267"></a><span class="p">{</span>
-<a name="line-268"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Open Browser...&quot;</span><span class="p">;</span>
-<a name="line-269"></a> <span class="n">QDesktopServices</span><span class="o">::</span><span class="n">openUrl</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
-<a name="line-270"></a><span class="p">}</span>
-<a name="line-271"></a>
-<a name="line-272"></a><span class="n">QMap</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">ParseUrlParameters</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span> <span class="o">&amp;</span><span class="n">url</span><span class="p">)</span>
-<a name="line-273"></a><span class="p">{</span>
-<a name="line-274"></a> <span class="n">QMap</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">urlParameters</span><span class="p">;</span>
-<a name="line-275"></a>
-<a name="line-276"></a> <span class="k">if</span> <span class="p">(</span><span class="n">url</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;?&#39;</span><span class="p">))</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="line-277"></a> <span class="p">{</span>
-<a name="line-278"></a> <span class="k">return</span> <span class="n">urlParameters</span><span class="p">;</span>
-<a name="line-279"></a> <span class="p">}</span>
-<a name="line-280"></a>
-<a name="line-281"></a> <span class="n">QString</span> <span class="n">tmp</span> <span class="o">=</span> <span class="n">url</span><span class="p">.</span><span class="n">right</span><span class="p">(</span><span class="n">url</span><span class="p">.</span><span class="n">length</span><span class="p">()</span><span class="o">-</span><span class="n">url</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;?&#39;</span><span class="p">))</span><span class="o">-</span><span class="mi">1</span><span class="p">);</span>
-<a name="line-282"></a> <span class="n">tmp</span> <span class="o">=</span> <span class="n">tmp</span><span class="p">.</span><span class="n">right</span><span class="p">(</span><span class="n">tmp</span><span class="p">.</span><span class="n">length</span><span class="p">()</span> <span class="o">-</span> <span class="n">tmp</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;#&#39;</span><span class="p">))</span><span class="o">-</span><span class="mi">1</span><span class="p">);</span>
-<a name="line-283"></a> <span class="n">QStringList</span> <span class="n">paramlist</span> <span class="o">=</span> <span class="n">tmp</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;&amp;&#39;</span><span class="p">));</span>
-<a name="line-284"></a>
-<a name="line-285"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">paramlist</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-286"></a> <span class="p">{</span>
-<a name="line-287"></a> <span class="n">QStringList</span> <span class="n">paramarg</span> <span class="o">=</span> <span class="n">paramlist</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">split</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;=&#39;</span><span class="p">));</span>
-<a name="line-288"></a> <span class="n">urlParameters</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">paramarg</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span><span class="n">paramarg</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="mi">1</span><span class="p">));</span>
-<a name="line-289"></a> <span class="p">}</span>
+<a name="line-266"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">)</span>
+<a name="line-267"></a> <span class="p">{</span>
+<a name="line-268"></a> <span class="k">return</span> <span class="n">PROCESSCANCELED</span><span class="p">;</span>
+<a name="line-269"></a> <span class="p">}</span>
+<a name="line-270"></a>
+<a name="line-271"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: DNG memory allocation and initialization&quot;</span> <span class="p">;</span>
+<a name="line-272"></a>
+<a name="line-273"></a><span class="hll"> <span class="n">dng_memory_allocator</span> <span class="nf">memalloc</span><span class="p">(</span><span class="n">gDefaultDNGMemoryAllocator</span><span class="p">);</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span>
+</span><a name="line-274"></a>
+<a name="line-275"></a> <span class="n">dng_rect</span> <span class="nf">rect</span><span class="p">(</span><span class="n">height</span><span class="p">,</span> <span class="n">width</span><span class="p">);</span>
+<a name="line-276"></a> <span class="n">DNGWriterHost</span> <span class="nf">host</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">memalloc</span><span class="p">);</span>
+<a name="line-277"></a>
+<a name="line-278"></a> <span class="n">host</span><span class="p">.</span><span class="n">SetSaveDNGVersion</span><span class="p">(</span><span class="n">dngVersion_SaveDefault</span><span class="p">);</span>
+<a name="line-279"></a> <span class="n">host</span><span class="p">.</span><span class="n">SetSaveLinearDNG</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
+<a name="line-280"></a> <span class="n">host</span><span class="p">.</span><span class="n">SetKeepOriginalFile</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-281"></a>
+<a name="line-282"></a> <span class="n">AutoPtr</span><span class="o">&lt;</span><span class="n">dng_image</span><span class="o">&gt;</span> <span class="n">image</span><span class="p">(</span><span class="k">new</span> <span class="n">dng_simple_image</span><span class="p">(</span><span class="n">rect</span><span class="p">,</span> <span class="p">(</span><span class="n">bayerPattern</span> <span class="o">==</span> <span class="n">Private</span><span class="o">::</span><span class="n">LinearRaw</span><span class="p">)</span> <span class="o">?</span> <span class="mi">3</span> <span class="o">:</span> <span class="mi">1</span><span class="p">,</span> <span class="n">ttShort</span><span class="p">,</span> <span class="n">memalloc</span><span class="p">));</span>
+<a name="line-283"></a>
+<a name="line-284"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">)</span>
+<a name="line-285"></a> <span class="p">{</span>
+<a name="line-286"></a> <span class="k">return</span> <span class="n">PROCESSCANCELED</span><span class="p">;</span>
+<a name="line-287"></a> <span class="p">}</span>
+<a name="line-288"></a>
+<a name="line-289"></a> <span class="c1">// -----------------------------------------------------------------------------------------</span>
<a name="line-290"></a>
-<a name="line-291"></a> <span class="k">return</span> <span class="n">urlParameters</span><span class="p">;</span>
-<a name="line-292"></a><span class="p">}</span>
-<a name="line-293"></a>
-<a name="line-294"></a><span class="kt">void</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">slotLinkingFailed</span><span class="p">()</span>
-<a name="line-295"></a><span class="p">{</span>
-<a name="line-296"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;LINK to Twitter fail&quot;</span><span class="p">;</span>
-<a name="line-297"></a>
-<a name="line-298"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-299"></a><span class="p">}</span>
-<a name="line-300"></a>
-<a name="line-301"></a><span class="kt">void</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">slotLinkingSucceeded</span><span class="p">()</span>
-<a name="line-302"></a><span class="p">{</span>
-<a name="line-303"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">o1Twitter</span><span class="o">-&gt;</span><span class="n">linked</span><span class="p">())</span>
-<a name="line-304"></a> <span class="p">{</span>
-<a name="line-305"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;UNLINK to Twitter ok&quot;</span><span class="p">;</span>
-<a name="line-306"></a>
-<a name="line-307"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
+<a name="line-291"></a> <span class="n">dng_pixel_buffer</span> <span class="n">buffer</span><span class="p">;</span>
+<a name="line-292"></a>
+<a name="line-293"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">fArea</span> <span class="o">=</span> <span class="n">rect</span><span class="p">;</span>
+<a name="line-294"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">fPlane</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-295"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">fPlanes</span> <span class="o">=</span> <span class="n">bayerPattern</span> <span class="o">==</span> <span class="n">Private</span><span class="o">::</span><span class="n">LinearRaw</span> <span class="o">?</span> <span class="mi">3</span> <span class="o">:</span> <span class="mi">1</span><span class="p">;</span>
+<a name="line-296"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">fRowStep</span> <span class="o">=</span> <span class="n">buffer</span><span class="p">.</span><span class="n">fPlanes</span> <span class="o">*</span> <span class="n">width</span><span class="p">;</span>
+<a name="line-297"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">fColStep</span> <span class="o">=</span> <span class="n">buffer</span><span class="p">.</span><span class="n">fPlanes</span><span class="p">;</span>
+<a name="line-298"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">fPlaneStep</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+<a name="line-299"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">fPixelType</span> <span class="o">=</span> <span class="n">ttShort</span><span class="p">;</span>
+<a name="line-300"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">fPixelSize</span> <span class="o">=</span> <span class="n">TagTypeSize</span><span class="p">(</span><span class="n">ttShort</span><span class="p">);</span>
+<a name="line-301"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">fData</span> <span class="o">=</span> <span class="n">rawData</span><span class="p">.</span><span class="n">data</span><span class="p">();</span>
+<a name="line-302"></a> <span class="n">image</span><span class="o">-&gt;</span><span class="n">Put</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
+<a name="line-303"></a>
+<a name="line-304"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">)</span>
+<a name="line-305"></a> <span class="p">{</span>
+<a name="line-306"></a> <span class="k">return</span> <span class="n">PROCESSCANCELED</span><span class="p">;</span>
+<a name="line-307"></a> <span class="p">}</span>
<a name="line-308"></a>
-<a name="line-309"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-310"></a> <span class="p">}</span>
-<a name="line-311"></a>
-<a name="line-312"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;LINK to Twitter ok&quot;</span><span class="p">;</span>
-<a name="line-313"></a> <span class="n">QVariantMap</span> <span class="n">extraTokens</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">o1Twitter</span><span class="o">-&gt;</span><span class="n">extraTokens</span><span class="p">();</span>
+<a name="line-309"></a> <span class="c1">// -----------------------------------------------------------------------------------------</span>
+<a name="line-310"></a>
+<a name="line-311"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: DNG Negative structure creation&quot;</span> <span class="p">;</span>
+<a name="line-312"></a>
+<a name="line-313"></a> <span class="n">AutoPtr</span><span class="o">&lt;</span><span class="n">dng_negative</span><span class="o">&gt;</span> <span class="n">negative</span><span class="p">(</span><span class="n">host</span><span class="p">.</span><span class="n">Make_dng_negative</span><span class="p">());</span>
<a name="line-314"></a>
-<a name="line-315"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">extraTokens</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-316"></a> <span class="p">{</span>
-<a name="line-317"></a> <span class="c1">//emit extraTokensReady(extraTokens);</span>
-<a name="line-318"></a>
-<a name="line-319"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Extra tokens in response:&quot;</span><span class="p">;</span>
-<a name="line-320"></a>
-<a name="line-321"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">key</span><span class="p">,</span> <span class="n">extraTokens</span><span class="p">.</span><span class="n">keys</span><span class="p">())</span>
-<a name="line-322"></a> <span class="p">{</span>
-<a name="line-323"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;</span><span class="se">\t</span><span class="s">&quot;</span>
-<a name="line-324"></a> <span class="o">&lt;&lt;</span> <span class="n">key</span>
-<a name="line-325"></a> <span class="o">&lt;&lt;</span> <span class="s">&quot;:&quot;</span>
-<a name="line-326"></a> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="n">extraTokens</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">key</span><span class="p">).</span><span class="n">toString</span><span class="p">().</span><span class="n">left</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;...&quot;</span><span class="p">));</span>
-<a name="line-327"></a> <span class="p">}</span>
-<a name="line-328"></a> <span class="p">}</span>
-<a name="line-329"></a>
-<a name="line-330"></a> <span class="n">emit</span> <span class="n">signalLinkingSucceeded</span><span class="p">();</span>
-<a name="line-331"></a>
-<a name="line-332"></a> <span class="n">getUserName</span><span class="p">();</span>
-<a name="line-333"></a><span class="p">}</span>
-<a name="line-334"></a>
-<a name="line-335"></a><span class="kt">bool</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">authenticated</span><span class="p">()</span>
-<a name="line-336"></a><span class="p">{</span>
-<a name="line-337"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">o1Twitter</span><span class="o">-&gt;</span><span class="n">linked</span><span class="p">();</span>
-<a name="line-338"></a><span class="p">}</span>
-<a name="line-339"></a>
-<a name="line-340"></a><span class="kt">void</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">cancel</span><span class="p">()</span>
-<a name="line-341"></a><span class="p">{</span>
-<a name="line-342"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
-<a name="line-343"></a> <span class="p">{</span>
-<a name="line-344"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">abort</span><span class="p">();</span>
-<a name="line-345"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-346"></a> <span class="p">}</span>
-<a name="line-347"></a>
-<a name="line-348"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-349"></a><span class="p">}</span>
-<a name="line-350"></a>
-<a name="line-351"></a><span class="kt">bool</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">addPhoto</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">imgPath</span><span class="p">,</span>
-<a name="line-352"></a> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="cm">/* uploadFolder */</span><span class="p">,</span>
-<a name="line-353"></a> <span class="kt">bool</span> <span class="n">rescale</span><span class="p">,</span>
-<a name="line-354"></a> <span class="kt">int</span> <span class="n">maxDim</span><span class="p">,</span>
-<a name="line-355"></a> <span class="kt">int</span> <span class="n">imageQuality</span><span class="p">)</span>
-<a name="line-356"></a><span class="p">{</span>
-<a name="line-357"></a>
-<a name="line-358"></a> <span class="n">QFileInfo</span> <span class="n">imgFileInfo</span><span class="p">(</span><span class="n">imgPath</span><span class="p">);</span>
-<a name="line-359"></a> <span class="n">QString</span> <span class="n">path</span><span class="p">;</span>
-<a name="line-360"></a> <span class="kt">bool</span> <span class="n">chunked</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-361"></a>
-<a name="line-362"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">imgFileInfo</span><span class="p">.</span><span class="n">suffix</span><span class="p">();</span>
+<a name="line-315"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetDefaultScale</span><span class="p">(</span><span class="n">dng_urational</span><span class="p">(</span><span class="n">outputWidth</span><span class="p">,</span> <span class="n">activeWidth</span><span class="p">),</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">outputHeight</span><span class="p">,</span> <span class="n">activeHeight</span><span class="p">));</span>
+<a name="line-316"></a>
+<a name="line-317"></a> <span class="k">if</span> <span class="p">(</span><span class="n">bayerPattern</span> <span class="o">!=</span> <span class="n">Private</span><span class="o">::</span><span class="n">LinearRaw</span><span class="p">)</span>
+<a name="line-318"></a> <span class="p">{</span>
+<a name="line-319"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetDefaultCropOrigin</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">8</span><span class="p">);</span>
+<a name="line-320"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetDefaultCropSize</span><span class="p">(</span><span class="n">activeWidth</span> <span class="o">-</span> <span class="mi">16</span><span class="p">,</span> <span class="n">activeHeight</span> <span class="o">-</span> <span class="mi">16</span><span class="p">);</span>
+<a name="line-321"></a> <span class="p">}</span>
+<a name="line-322"></a> <span class="k">else</span>
+<a name="line-323"></a> <span class="p">{</span>
+<a name="line-324"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetDefaultCropOrigin</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-325"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetDefaultCropSize</span><span class="p">(</span><span class="n">activeWidth</span><span class="p">,</span> <span class="n">activeHeight</span><span class="p">);</span>
+<a name="line-326"></a> <span class="p">}</span>
+<a name="line-327"></a>
+<a name="line-328"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetActiveArea</span><span class="p">(</span><span class="n">activeArea</span><span class="p">);</span>
+<a name="line-329"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetModelName</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">model</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-330"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetLocalName</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1 %2&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">make</span><span class="p">,</span> <span class="n">identify</span><span class="p">.</span><span class="n">model</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-331"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetOriginalRawFileName</span><span class="p">(</span><span class="n">inputInfo</span><span class="p">.</span><span class="n">fileName</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-332"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetColorChannels</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">rawColors</span><span class="p">);</span>
+<a name="line-333"></a>
+<a name="line-334"></a> <span class="n">ColorKeyCode</span> <span class="n">colorCodes</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> <span class="n">colorKeyMaxEnum</span><span class="p">,</span> <span class="n">colorKeyMaxEnum</span><span class="p">,</span> <span class="n">colorKeyMaxEnum</span><span class="p">,</span> <span class="n">colorKeyMaxEnum</span> <span class="p">};</span>
+<a name="line-335"></a>
+<a name="line-336"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">qMax</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">identify</span><span class="p">.</span><span class="n">colorKeys</span><span class="p">.</span><span class="n">length</span><span class="p">())</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-337"></a> <span class="p">{</span>
+<a name="line-338"></a> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">colorKeys</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;R&#39;</span><span class="p">))</span>
+<a name="line-339"></a> <span class="p">{</span>
+<a name="line-340"></a> <span class="n">colorCodes</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">colorKeyRed</span><span class="p">;</span>
+<a name="line-341"></a> <span class="p">}</span>
+<a name="line-342"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">colorKeys</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;G&#39;</span><span class="p">))</span>
+<a name="line-343"></a> <span class="p">{</span>
+<a name="line-344"></a> <span class="n">colorCodes</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">colorKeyGreen</span><span class="p">;</span>
+<a name="line-345"></a> <span class="p">}</span>
+<a name="line-346"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">colorKeys</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;B&#39;</span><span class="p">))</span>
+<a name="line-347"></a> <span class="p">{</span>
+<a name="line-348"></a> <span class="n">colorCodes</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">colorKeyBlue</span><span class="p">;</span>
+<a name="line-349"></a> <span class="p">}</span>
+<a name="line-350"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">colorKeys</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;C&#39;</span><span class="p">))</span>
+<a name="line-351"></a> <span class="p">{</span>
+<a name="line-352"></a> <span class="n">colorCodes</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">colorKeyCyan</span><span class="p">;</span>
+<a name="line-353"></a> <span class="p">}</span>
+<a name="line-354"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">colorKeys</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;M&#39;</span><span class="p">))</span>
+<a name="line-355"></a> <span class="p">{</span>
+<a name="line-356"></a> <span class="n">colorCodes</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">colorKeyMagenta</span><span class="p">;</span>
+<a name="line-357"></a> <span class="p">}</span>
+<a name="line-358"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">colorKeys</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;Y&#39;</span><span class="p">))</span>
+<a name="line-359"></a> <span class="p">{</span>
+<a name="line-360"></a> <span class="n">colorCodes</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">colorKeyYellow</span><span class="p">;</span>
+<a name="line-361"></a> <span class="p">}</span>
+<a name="line-362"></a> <span class="p">}</span>
<a name="line-363"></a>
-<a name="line-364"></a> <span class="k">if</span> <span class="p">((</span><span class="n">imgFileInfo</span><span class="p">.</span><span class="n">suffix</span><span class="p">()</span> <span class="o">!=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;gif&quot;</span><span class="p">))</span> <span class="o">&amp;&amp;</span>
-<a name="line-365"></a> <span class="p">(</span><span class="n">imgFileInfo</span><span class="p">.</span><span class="n">suffix</span><span class="p">()</span> <span class="o">!=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;mp4&quot;</span><span class="p">)))</span>
-<a name="line-366"></a> <span class="p">{</span>
-<a name="line-367"></a> <span class="n">QImage</span> <span class="n">image</span> <span class="o">=</span> <span class="n">PreviewLoadThread</span><span class="o">::</span><span class="n">loadHighQualitySynchronously</span><span class="p">(</span><span class="n">imgPath</span><span class="p">).</span><span class="n">copyQImage</span><span class="p">();</span>
-<a name="line-368"></a> <span class="n">qint64</span> <span class="n">imageSize</span> <span class="o">=</span> <span class="n">QFileInfo</span><span class="p">(</span><span class="n">imgPath</span><span class="p">).</span><span class="n">size</span><span class="p">();</span>
-<a name="line-369"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;SIZE of image using qfileinfo: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">imageSize</span><span class="p">;</span>
-<a name="line-370"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; &quot;</span><span class="p">;</span>
+<a name="line-364"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetColorKeys</span><span class="p">(</span><span class="n">colorCodes</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">colorCodes</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">colorCodes</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">colorCodes</span><span class="p">[</span><span class="mi">3</span><span class="p">]);</span>
+<a name="line-365"></a>
+<a name="line-366"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">bayerPattern</span><span class="p">)</span>
+<a name="line-367"></a> <span class="p">{</span>
+<a name="line-368"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">Standard</span><span class="p">:</span>
+<a name="line-369"></a> <span class="c1">// Standard bayer mosaicing. All work fine there.</span>
+<a name="line-370"></a> <span class="c1">// Bayer CCD mask: https://en.wikipedia.org/wiki/Bayer_filter</span>
<a name="line-371"></a>
-<a name="line-372"></a> <span class="k">if</span> <span class="p">(</span><span class="n">image</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
-<a name="line-373"></a> <span class="p">{</span>
-<a name="line-374"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-375"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-376"></a> <span class="p">}</span>
-<a name="line-377"></a>
-<a name="line-378"></a> <span class="n">path</span> <span class="o">=</span> <span class="n">WSToolUtils</span><span class="o">::</span><span class="n">makeTemporaryDir</span><span class="p">(</span><span class="s">&quot;twitter&quot;</span><span class="p">).</span><span class="n">filePath</span><span class="p">(</span><span class="n">imgFileInfo</span><span class="p">.</span><span class="n">baseName</span><span class="p">().</span><span class="n">trimmed</span><span class="p">()</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;.jpg&quot;</span><span class="p">));</span>
+<a name="line-372"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetBayerMosaic</span><span class="p">(</span><span class="n">filter</span><span class="p">);</span>
+<a name="line-373"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-374"></a>
+<a name="line-375"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">Fuji</span><span class="p">:</span>
+<a name="line-376"></a> <span class="c1">// TODO: Fuji is special case. Need to setup different bayer rules here.</span>
+<a name="line-377"></a> <span class="c1">// It do not work in all settings. Need indeep investiguations.</span>
+<a name="line-378"></a> <span class="c1">// Fuji superCCD: https://en.wikipedia.org/wiki/Super_CCD</span>
<a name="line-379"></a>
-<a name="line-380"></a> <span class="k">if</span> <span class="p">(</span><span class="n">rescale</span> <span class="o">&amp;&amp;</span> <span class="p">((</span><span class="n">image</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">maxDim</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">image</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">maxDim</span><span class="p">)))</span>
-<a name="line-381"></a> <span class="p">{</span>
-<a name="line-382"></a> <span class="n">image</span> <span class="o">=</span> <span class="n">image</span><span class="p">.</span><span class="n">scaled</span><span class="p">(</span><span class="n">maxDim</span><span class="p">,</span> <span class="n">maxDim</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">KeepAspectRatio</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">SmoothTransformation</span><span class="p">);</span>
-<a name="line-383"></a> <span class="p">}</span>
-<a name="line-384"></a>
-<a name="line-385"></a> <span class="n">image</span><span class="p">.</span><span class="n">save</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s">&quot;JPEG&quot;</span><span class="p">,</span> <span class="n">imageQuality</span><span class="p">);</span>
+<a name="line-380"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetFujiMosaic</span><span class="p">(</span><span class="n">filter</span><span class="p">);</span>
+<a name="line-381"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-382"></a>
+<a name="line-383"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">FourColor</span><span class="p">:</span>
+<a name="line-384"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetQuadMosaic</span><span class="p">(</span><span class="n">filter</span><span class="p">);</span>
+<a name="line-385"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-386"></a>
-<a name="line-387"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">meta</span><span class="p">.</span><span class="n">load</span><span class="p">(</span><span class="n">imgPath</span><span class="p">))</span>
-<a name="line-388"></a> <span class="p">{</span>
-<a name="line-389"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">meta</span><span class="p">.</span><span class="n">setItemDimensions</span><span class="p">(</span><span class="n">image</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
-<a name="line-390"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">meta</span><span class="p">.</span><span class="n">setItemOrientation</span><span class="p">(</span><span class="n">DMetadata</span><span class="o">::</span><span class="n">ORIENTATION_NORMAL</span><span class="p">);</span>
-<a name="line-391"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">meta</span><span class="p">.</span><span class="n">setMetadataWritingMode</span><span class="p">((</span><span class="kt">int</span><span class="p">)</span><span class="n">DMetadata</span><span class="o">::</span><span class="n">WRITE_TO_FILE_ONLY</span><span class="p">);</span>
-<a name="line-392"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">meta</span><span class="p">.</span><span class="n">save</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="nb">true</span><span class="p">);</span>
-<a name="line-393"></a> <span class="p">}</span>
-<a name="line-394"></a> <span class="p">}</span>
-<a name="line-395"></a> <span class="k">else</span>
-<a name="line-396"></a> <span class="p">{</span>
-<a name="line-397"></a> <span class="n">path</span> <span class="o">=</span> <span class="n">imgPath</span><span class="p">;</span>
-<a name="line-398"></a> <span class="n">chunked</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-399"></a> <span class="p">}</span>
-<a name="line-400"></a>
-<a name="line-401"></a> <span class="k">if</span> <span class="p">(</span><span class="n">chunked</span><span class="p">)</span>
-<a name="line-402"></a> <span class="p">{</span>
-<a name="line-403"></a> <span class="k">return</span> <span class="n">addPhotoInit</span><span class="p">(</span><span class="n">path</span><span class="p">);</span>
-<a name="line-404"></a> <span class="p">}</span>
-<a name="line-405"></a> <span class="k">else</span>
-<a name="line-406"></a> <span class="p">{</span>
-<a name="line-407"></a> <span class="k">return</span> <span class="n">addPhotoSingleUpload</span><span class="p">(</span><span class="n">path</span><span class="p">);</span>
-<a name="line-408"></a> <span class="p">}</span>
-<a name="line-409"></a><span class="p">}</span>
-<a name="line-410"></a>
-<a name="line-411"></a><span class="kt">bool</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">addPhotoSingleUpload</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">imgPath</span><span class="p">)</span>
-<a name="line-412"></a><span class="p">{</span>
-<a name="line-413"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;addPhotoSingleUpload&quot;</span><span class="p">;</span>
-<a name="line-414"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-387"></a> <span class="k">default</span><span class="o">:</span>
+<a name="line-388"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-389"></a> <span class="p">}</span>
+<a name="line-390"></a>
+<a name="line-391"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetWhiteLevel</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">whitePoint</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-392"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetWhiteLevel</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">whitePoint</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-393"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetWhiteLevel</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">whitePoint</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
+<a name="line-394"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetWhiteLevel</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">whitePoint</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-395"></a>
+<a name="line-396"></a> <span class="k">const</span> <span class="n">dng_mosaic_info</span><span class="o">*</span> <span class="k">const</span> <span class="n">mosaicinfo</span> <span class="o">=</span> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">GetMosaicInfo</span><span class="p">();</span>
+<a name="line-397"></a>
+<a name="line-398"></a> <span class="k">if</span> <span class="p">((</span><span class="n">mosaicinfo</span> <span class="o">!=</span> <span class="k">nullptr</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">mosaicinfo</span><span class="o">-&gt;</span><span class="n">fCFAPatternSize</span> <span class="o">==</span> <span class="n">dng_point</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">)))</span>
+<a name="line-399"></a> <span class="p">{</span>
+<a name="line-400"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetQuadBlacks</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">blackPoint</span> <span class="o">+</span> <span class="n">identify</span><span class="p">.</span><span class="n">blackPointCh</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
+<a name="line-401"></a> <span class="n">identify</span><span class="p">.</span><span class="n">blackPoint</span> <span class="o">+</span> <span class="n">identify</span><span class="p">.</span><span class="n">blackPointCh</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span>
+<a name="line-402"></a> <span class="n">identify</span><span class="p">.</span><span class="n">blackPoint</span> <span class="o">+</span> <span class="n">identify</span><span class="p">.</span><span class="n">blackPointCh</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span>
+<a name="line-403"></a> <span class="n">identify</span><span class="p">.</span><span class="n">blackPoint</span> <span class="o">+</span> <span class="n">identify</span><span class="p">.</span><span class="n">blackPointCh</span><span class="p">[</span><span class="mi">3</span><span class="p">]);</span>
+<a name="line-404"></a> <span class="p">}</span>
+<a name="line-405"></a> <span class="k">else</span>
+<a name="line-406"></a> <span class="p">{</span>
+<a name="line-407"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetBlackLevel</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">blackPoint</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-408"></a> <span class="p">}</span>
+<a name="line-409"></a>
+<a name="line-410"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetBaselineExposure</span><span class="p">(</span><span class="mf">0.0</span><span class="p">);</span>
+<a name="line-411"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetBaselineNoise</span><span class="p">(</span><span class="mf">1.0</span><span class="p">);</span>
+<a name="line-412"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetBaselineSharpness</span><span class="p">(</span><span class="mf">1.0</span><span class="p">);</span>
+<a name="line-413"></a>
+<a name="line-414"></a> <span class="n">dng_orientation</span> <span class="n">orientation</span><span class="p">;</span>
<a name="line-415"></a>
-<a name="line-416"></a> <span class="n">TwMPForm</span> <span class="n">form</span><span class="p">;</span>
-<a name="line-417"></a>
-<a name="line-418"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">form</span><span class="p">.</span><span class="n">addFile</span><span class="p">(</span><span class="n">imgPath</span><span class="p">))</span>
-<a name="line-419"></a> <span class="p">{</span>
-<a name="line-420"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-421"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-422"></a> <span class="p">}</span>
-<a name="line-423"></a>
-<a name="line-424"></a> <span class="n">form</span><span class="p">.</span><span class="n">finish</span><span class="p">();</span>
+<a name="line-416"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">orientation</span><span class="p">)</span>
+<a name="line-417"></a> <span class="p">{</span>
+<a name="line-418"></a> <span class="k">case</span> <span class="n">DRawInfo</span><span class="o">::</span><span class="nl">ORIENTATION_180</span><span class="p">:</span>
+<a name="line-419"></a> <span class="n">orientation</span> <span class="o">=</span> <span class="n">dng_orientation</span><span class="o">::</span><span class="n">Rotate180</span><span class="p">();</span>
+<a name="line-420"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-421"></a>
+<a name="line-422"></a> <span class="k">case</span> <span class="n">DRawInfo</span><span class="o">::</span><span class="nl">ORIENTATION_Mirror90CCW</span><span class="p">:</span>
+<a name="line-423"></a> <span class="n">orientation</span> <span class="o">=</span> <span class="n">dng_orientation</span><span class="o">::</span><span class="n">Mirror90CCW</span><span class="p">();</span>
+<a name="line-424"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-425"></a>
-<a name="line-426"></a> <span class="k">if</span> <span class="p">(</span><span class="n">form</span><span class="p">.</span><span class="n">formData</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-427"></a> <span class="p">{</span>
-<a name="line-428"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Form DATA Empty:&quot;</span><span class="p">;</span>
-<a name="line-429"></a> <span class="p">}</span>
-<a name="line-430"></a>
-<a name="line-431"></a> <span class="k">if</span> <span class="p">(</span><span class="n">form</span><span class="p">.</span><span class="n">formData</span><span class="p">().</span><span class="n">isNull</span><span class="p">())</span>
-<a name="line-432"></a> <span class="p">{</span>
-<a name="line-433"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Form DATA null:&quot;</span><span class="p">;</span>
-<a name="line-434"></a> <span class="p">}</span>
-<a name="line-435"></a>
-<a name="line-436"></a> <span class="n">QUrl</span> <span class="n">url</span> <span class="o">=</span> <span class="n">QUrl</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://upload.twitter.com/1.1/media/upload.json&quot;</span><span class="p">));</span>
-<a name="line-437"></a>
-<a name="line-438"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">O0RequestParameter</span><span class="o">&gt;</span> <span class="n">reqParams</span> <span class="o">=</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">O0RequestParameter</span><span class="o">&gt;</span><span class="p">();</span>
-<a name="line-439"></a>
-<a name="line-440"></a> <span class="n">QNetworkRequest</span> <span class="nf">request</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
-<a name="line-441"></a> <span class="n">request</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">form</span><span class="p">.</span><span class="n">contentType</span><span class="p">());</span>
-<a name="line-442"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestor</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">reqParams</span><span class="p">,</span> <span class="n">form</span><span class="p">.</span><span class="n">formData</span><span class="p">());</span>
-<a name="line-443"></a>
-<a name="line-444"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">TW_ADDPHOTO</span><span class="p">;</span>
-<a name="line-445"></a>
-<a name="line-446"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-447"></a><span class="p">}</span>
-<a name="line-448"></a>
-<a name="line-449"></a><span class="kt">bool</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">addPhotoInit</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">imgPath</span><span class="p">)</span>
-<a name="line-450"></a><span class="p">{</span>
-<a name="line-451"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;addPhotoInit&quot;</span><span class="p">;</span>
-<a name="line-452"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-426"></a> <span class="k">case</span> <span class="n">DRawInfo</span><span class="o">::</span><span class="nl">ORIENTATION_90CCW</span><span class="p">:</span>
+<a name="line-427"></a> <span class="n">orientation</span> <span class="o">=</span> <span class="n">dng_orientation</span><span class="o">::</span><span class="n">Rotate90CCW</span><span class="p">();</span>
+<a name="line-428"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-429"></a>
+<a name="line-430"></a> <span class="k">case</span> <span class="n">DRawInfo</span><span class="o">::</span><span class="nl">ORIENTATION_90CW</span><span class="p">:</span>
+<a name="line-431"></a> <span class="n">orientation</span> <span class="o">=</span> <span class="n">dng_orientation</span><span class="o">::</span><span class="n">Rotate90CW</span><span class="p">();</span>
+<a name="line-432"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-433"></a>
+<a name="line-434"></a> <span class="k">default</span><span class="o">:</span> <span class="c1">// ORIENTATION_NONE</span>
+<a name="line-435"></a> <span class="n">orientation</span> <span class="o">=</span> <span class="n">dng_orientation</span><span class="o">::</span><span class="n">Normal</span><span class="p">();</span>
+<a name="line-436"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-437"></a> <span class="p">}</span>
+<a name="line-438"></a>
+<a name="line-439"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetBaseOrientation</span><span class="p">(</span><span class="n">orientation</span><span class="p">);</span>
+<a name="line-440"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetAntiAliasStrength</span><span class="p">(</span><span class="n">dng_urational</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="mi">100</span><span class="p">));</span>
+<a name="line-441"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetLinearResponseLimit</span><span class="p">(</span><span class="mf">1.0</span><span class="p">);</span>
+<a name="line-442"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetShadowScale</span><span class="p">(</span> <span class="n">dng_urational</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="p">);</span>
+<a name="line-443"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetAnalogBalance</span><span class="p">(</span><span class="n">dng_vector_3</span><span class="p">(</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">));</span>
+<a name="line-444"></a>
+<a name="line-445"></a> <span class="c1">// -------------------------------------------------------------------------------</span>
+<a name="line-446"></a>
+<a name="line-447"></a> <span class="n">AutoPtr</span><span class="o">&lt;</span><span class="n">dng_camera_profile</span><span class="o">&gt;</span> <span class="n">prof</span><span class="p">(</span><span class="k">new</span> <span class="n">dng_camera_profile</span><span class="p">);</span>
+<a name="line-448"></a> <span class="n">prof</span><span class="o">-&gt;</span><span class="n">SetName</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1 %2&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">make</span><span class="p">,</span> <span class="n">identify</span><span class="p">.</span><span class="n">model</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-449"></a>
+<a name="line-450"></a> <span class="c1">// Set Camera-&gt;XYZ Color matrix as profile.</span>
+<a name="line-451"></a>
+<a name="line-452"></a> <span class="n">dng_matrix</span> <span class="n">matrix</span><span class="p">;</span>
<a name="line-453"></a>
-<a name="line-454"></a> <span class="n">TwMPForm</span> <span class="n">form</span><span class="p">;</span>
-<a name="line-455"></a> <span class="n">QByteArray</span> <span class="n">mediaType</span><span class="p">,</span> <span class="n">mediaCategory</span><span class="p">;</span>
-<a name="line-456"></a> <span class="n">QFileInfo</span> <span class="nf">fileInfo</span><span class="p">(</span><span class="n">imgPath</span><span class="p">);</span>
-<a name="line-457"></a> <span class="n">QString</span> <span class="nf">fileFormat</span><span class="p">(</span><span class="n">fileInfo</span><span class="p">.</span><span class="n">suffix</span><span class="p">());</span>
-<a name="line-458"></a>
-<a name="line-459"></a> <span class="n">form</span><span class="p">.</span><span class="n">addPair</span><span class="p">(</span><span class="n">form</span><span class="p">.</span><span class="n">createPair</span><span class="p">(</span><span class="s">&quot;command&quot;</span><span class="p">,</span> <span class="s">&quot;INIT&quot;</span><span class="p">));</span>
-<a name="line-460"></a> <span class="n">form</span><span class="p">.</span><span class="n">addPair</span><span class="p">(</span><span class="n">form</span><span class="p">.</span><span class="n">createPair</span><span class="p">(</span><span class="s">&quot;total_bytes&quot;</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">QFileInfo</span><span class="p">(</span><span class="n">imgPath</span><span class="p">).</span><span class="n">size</span><span class="p">()).</span><span class="n">toLatin1</span><span class="p">()));</span>
-<a name="line-461"></a>
-<a name="line-462"></a> <span class="cm">/* (Feb 2019)</span>
-<a name="line-463"></a><span class="cm"> * Image file must be &lt;= 5MB</span>
-<a name="line-464"></a><span class="cm"> * Gif must be &lt;= 15MB</span>
-<a name="line-465"></a><span class="cm"> * Video must be &lt;= 512MB</span>
-<a name="line-466"></a><span class="cm"> */</span>
-<a name="line-467"></a>
-<a name="line-468"></a> <span class="k">if</span> <span class="p">(</span><span class="n">imageFormat</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">fileFormat</span><span class="p">)</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="line-469"></a> <span class="p">{</span>
-<a name="line-470"></a> <span class="n">mediaType</span> <span class="o">=</span> <span class="s">&quot;image/jpeg&quot;</span><span class="p">;</span>
-<a name="line-471"></a>
-<a name="line-472"></a> <span class="k">if</span> <span class="p">(</span><span class="n">fileFormat</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;gif&quot;</span><span class="p">))</span>
-<a name="line-473"></a> <span class="p">{</span>
+<a name="line-454"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">rawColors</span><span class="p">)</span>
+<a name="line-455"></a> <span class="p">{</span>
+<a name="line-456"></a> <span class="k">case</span> <span class="mi">3</span><span class="o">:</span>
+<a name="line-457"></a> <span class="p">{</span>
+<a name="line-458"></a> <span class="n">dng_matrix_3by3</span> <span class="n">camXYZ</span><span class="p">;</span>
+<a name="line-459"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">];</span>
+<a name="line-460"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">];</span>
+<a name="line-461"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">2</span><span class="p">];</span>
+<a name="line-462"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">];</span>
+<a name="line-463"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">];</span>
+<a name="line-464"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">];</span>
+<a name="line-465"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">];</span>
+<a name="line-466"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">1</span><span class="p">];</span>
+<a name="line-467"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">2</span><span class="p">];</span>
+<a name="line-468"></a>
+<a name="line-469"></a> <span class="k">if</span> <span class="p">(</span><span class="n">camXYZ</span><span class="p">.</span><span class="n">MaxEntry</span><span class="p">()</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">)</span>
+<a name="line-470"></a> <span class="p">{</span>
+<a name="line-471"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: camera XYZ Matrix is null : camera not supported&quot;</span> <span class="p">;</span>
+<a name="line-472"></a> <span class="k">return</span> <span class="n">FILENOTSUPPORTED</span><span class="p">;</span>
+<a name="line-473"></a> <span class="p">}</span>
<a name="line-474"></a>
-<a name="line-475"></a> <span class="k">if</span> <span class="p">(</span><span class="n">fileInfo</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">15728640</span><span class="p">)</span>
-<a name="line-476"></a> <span class="p">{</span>
-<a name="line-477"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-478"></a> <span class="n">emit</span> <span class="nf">signalAddPhotoFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;File too big to upload&quot;</span><span class="p">));</span>
+<a name="line-475"></a> <span class="n">matrix</span> <span class="o">=</span> <span class="n">camXYZ</span><span class="p">;</span>
+<a name="line-476"></a>
+<a name="line-477"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-478"></a> <span class="p">}</span>
<a name="line-479"></a>
-<a name="line-480"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-481"></a> <span class="p">}</span>
-<a name="line-482"></a>
-<a name="line-483"></a> <span class="n">mediaCategory</span> <span class="o">=</span> <span class="s">&quot;TWEET_GIF&quot;</span><span class="p">;</span>
-<a name="line-484"></a> <span class="p">}</span>
-<a name="line-485"></a> <span class="k">else</span>
-<a name="line-486"></a> <span class="p">{</span>
-<a name="line-487"></a> <span class="k">if</span> <span class="p">(</span><span class="n">fileInfo</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">5242880</span><span class="p">)</span>
-<a name="line-488"></a> <span class="p">{</span>
-<a name="line-489"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-490"></a> <span class="n">emit</span> <span class="nf">signalAddPhotoFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;File too big to upload&quot;</span><span class="p">));</span>
-<a name="line-491"></a>
-<a name="line-492"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-493"></a> <span class="p">}</span>
-<a name="line-494"></a>
-<a name="line-495"></a> <span class="n">mediaCategory</span> <span class="o">=</span> <span class="s">&quot;TWEET_IMAGE&quot;</span><span class="p">;</span>
-<a name="line-496"></a> <span class="p">}</span>
-<a name="line-497"></a> <span class="p">}</span>
-<a name="line-498"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">fileFormat</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;mp4&quot;</span><span class="p">))</span>
-<a name="line-499"></a> <span class="p">{</span>
-<a name="line-500"></a> <span class="k">if</span> <span class="p">(</span><span class="n">fileInfo</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">536870912</span><span class="p">)</span>
-<a name="line-501"></a> <span class="p">{</span>
-<a name="line-502"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-503"></a> <span class="n">emit</span> <span class="nf">signalAddPhotoFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;File too big to upload&quot;</span><span class="p">));</span>
-<a name="line-504"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-505"></a> <span class="p">}</span>
-<a name="line-506"></a>
-<a name="line-507"></a> <span class="n">mediaType</span> <span class="o">=</span> <span class="s">&quot;video/mp4&quot;</span><span class="p">;</span>
-<a name="line-508"></a> <span class="n">mediaCategory</span> <span class="o">=</span> <span class="s">&quot;TWEET_VIDEO&quot;</span><span class="p">;</span>
-<a name="line-509"></a> <span class="p">}</span>
-<a name="line-510"></a> <span class="k">else</span>
-<a name="line-511"></a> <span class="p">{</span>
-<a name="line-512"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-513"></a> <span class="n">emit</span> <span class="nf">signalAddPhotoFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Media format is not supported yet&quot;</span><span class="p">));</span>
-<a name="line-514"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-515"></a> <span class="p">}</span>
-<a name="line-516"></a>
-<a name="line-517"></a> <span class="n">form</span><span class="p">.</span><span class="n">addPair</span><span class="p">(</span><span class="n">form</span><span class="p">.</span><span class="n">createPair</span><span class="p">(</span><span class="s">&quot;media_type&quot;</span><span class="p">,</span> <span class="n">mediaType</span><span class="p">));</span>
-<a name="line-518"></a> <span class="n">form</span><span class="p">.</span><span class="n">addPair</span><span class="p">(</span><span class="n">form</span><span class="p">.</span><span class="n">createPair</span><span class="p">(</span><span class="s">&quot;media_category&quot;</span><span class="p">,</span> <span class="n">mediaCategory</span><span class="p">));</span>
-<a name="line-519"></a> <span class="n">form</span><span class="p">.</span><span class="n">finish</span><span class="p">();</span>
+<a name="line-480"></a> <span class="k">case</span> <span class="mi">4</span><span class="o">:</span>
+<a name="line-481"></a> <span class="p">{</span>
+<a name="line-482"></a> <span class="n">dng_matrix_4by3</span> <span class="n">camXYZ</span><span class="p">;</span>
+<a name="line-483"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">];</span>
+<a name="line-484"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">];</span>
+<a name="line-485"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">2</span><span class="p">];</span>
+<a name="line-486"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">];</span>
+<a name="line-487"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">];</span>
+<a name="line-488"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">];</span>
+<a name="line-489"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">];</span>
+<a name="line-490"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">1</span><span class="p">];</span>
+<a name="line-491"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">2</span><span class="p">];</span>
+<a name="line-492"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">3</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">3</span><span class="p">][</span><span class="mi">0</span><span class="p">];</span>
+<a name="line-493"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">3</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">3</span><span class="p">][</span><span class="mi">1</span><span class="p">];</span>
+<a name="line-494"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">3</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">3</span><span class="p">][</span><span class="mi">2</span><span class="p">];</span>
+<a name="line-495"></a>
+<a name="line-496"></a> <span class="k">if</span> <span class="p">(</span><span class="n">camXYZ</span><span class="p">.</span><span class="n">MaxEntry</span><span class="p">()</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">)</span>
+<a name="line-497"></a> <span class="p">{</span>
+<a name="line-498"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: camera XYZ Matrix is null : camera not supported&quot;</span> <span class="p">;</span>
+<a name="line-499"></a> <span class="k">return</span> <span class="n">FILENOTSUPPORTED</span><span class="p">;</span>
+<a name="line-500"></a> <span class="p">}</span>
+<a name="line-501"></a>
+<a name="line-502"></a> <span class="n">matrix</span> <span class="o">=</span> <span class="n">camXYZ</span><span class="p">;</span>
+<a name="line-503"></a>
+<a name="line-504"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-505"></a> <span class="p">}</span>
+<a name="line-506"></a> <span class="p">}</span>
+<a name="line-507"></a>
+<a name="line-508"></a> <span class="n">prof</span><span class="o">-&gt;</span><span class="n">SetColorMatrix1</span><span class="p">((</span><span class="n">dng_matrix</span><span class="p">)</span> <span class="n">matrix</span><span class="p">);</span>
+<a name="line-509"></a> <span class="n">prof</span><span class="o">-&gt;</span><span class="n">SetCalibrationIlluminant1</span><span class="p">(</span><span class="n">lsD65</span><span class="p">);</span>
+<a name="line-510"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">AddProfile</span><span class="p">(</span><span class="n">prof</span><span class="p">);</span>
+<a name="line-511"></a>
+<a name="line-512"></a> <span class="n">dng_vector</span> <span class="nf">camNeutral</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">rawColors</span><span class="p">);</span>
+<a name="line-513"></a>
+<a name="line-514"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">rawColors</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-515"></a> <span class="p">{</span>
+<a name="line-516"></a> <span class="n">camNeutral</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="mf">1.0</span><span class="o">/</span><span class="n">identify</span><span class="p">.</span><span class="n">cameraMult</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+<a name="line-517"></a> <span class="p">}</span>
+<a name="line-518"></a>
+<a name="line-519"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetCameraNeutral</span><span class="p">(</span><span class="n">camNeutral</span><span class="p">);</span>
<a name="line-520"></a>
-<a name="line-521"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">form</span><span class="p">.</span><span class="n">formData</span><span class="p">();</span>
-<a name="line-522"></a>
-<a name="line-523"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadUrl</span><span class="p">);</span>
-<a name="line-524"></a>
-<a name="line-525"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">O0RequestParameter</span><span class="o">&gt;</span> <span class="n">reqParams</span> <span class="o">=</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">O0RequestParameter</span><span class="o">&gt;</span><span class="p">();</span>
-<a name="line-526"></a>
-<a name="line-527"></a> <span class="n">QNetworkRequest</span> <span class="nf">request</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
-<a name="line-528"></a> <span class="n">request</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">form</span><span class="p">.</span><span class="n">contentType</span><span class="p">());</span>
-<a name="line-529"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestor</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">reqParams</span><span class="p">,</span> <span class="n">form</span><span class="p">.</span><span class="n">formData</span><span class="p">());</span>
-<a name="line-530"></a>
-<a name="line-531"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mediaUploadedPath</span> <span class="o">=</span> <span class="n">imgPath</span><span class="p">;</span>
-<a name="line-532"></a>
-<a name="line-533"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">TW_UPLOADINIT</span><span class="p">;</span>
-<a name="line-534"></a>
-<a name="line-535"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-536"></a><span class="p">}</span>
-<a name="line-537"></a>
-<a name="line-538"></a><span class="kt">bool</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">addPhotoAppend</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">mediaId</span><span class="p">,</span> <span class="kt">int</span> <span class="n">segmentIndex</span><span class="p">)</span>
-<a name="line-539"></a><span class="p">{</span>
-<a name="line-540"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;addPhotoAppend: &quot;</span><span class="p">;</span>
+<a name="line-521"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">)</span>
+<a name="line-522"></a> <span class="p">{</span>
+<a name="line-523"></a> <span class="k">return</span> <span class="n">PROCESSCANCELED</span><span class="p">;</span>
+<a name="line-524"></a> <span class="p">}</span>
+<a name="line-525"></a>
+<a name="line-526"></a> <span class="c1">// -----------------------------------------------------------------------------------------</span>
+<a name="line-527"></a>
+<a name="line-528"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Updating metadata to DNG Negative&quot;</span> <span class="p">;</span>
+<a name="line-529"></a>
+<a name="line-530"></a> <span class="n">dng_exif</span><span class="o">*</span> <span class="k">const</span> <span class="n">exif</span> <span class="o">=</span> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">GetExif</span><span class="p">();</span>
+<a name="line-531"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fModel</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">model</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-532"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fMake</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">make</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-533"></a>
+<a name="line-534"></a> <span class="n">QString</span> <span class="n">str</span><span class="p">;</span>
+<a name="line-535"></a> <span class="n">DMetadata</span> <span class="n">meta</span><span class="p">;</span>
+<a name="line-536"></a>
+<a name="line-537"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">load</span><span class="p">(</span><span class="n">inputFile</span><span class="p">()))</span>
+<a name="line-538"></a> <span class="p">{</span>
+<a name="line-539"></a> <span class="kt">long</span> <span class="kt">int</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">;</span>
+<a name="line-540"></a> <span class="kt">long</span> <span class="n">val</span><span class="p">;</span>
<a name="line-541"></a>
-<a name="line-542"></a> <span class="k">static</span> <span class="n">TwMPForm</span> <span class="n">form</span><span class="p">;</span>
+<a name="line-542"></a> <span class="c1">// Time from original shot</span>
<a name="line-543"></a>
-<a name="line-544"></a> <span class="k">if</span> <span class="p">(</span><span class="n">segmentIndex</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-545"></a> <span class="p">{</span>
-<a name="line-546"></a> <span class="n">form</span><span class="p">.</span><span class="n">addPair</span><span class="p">(</span><span class="n">form</span><span class="p">.</span><span class="n">createPair</span><span class="p">(</span><span class="s">&quot;command&quot;</span><span class="p">,</span> <span class="s">&quot;APPEND&quot;</span><span class="p">));</span>
-<a name="line-547"></a> <span class="n">form</span><span class="p">.</span><span class="n">addPair</span><span class="p">(</span><span class="n">form</span><span class="p">.</span><span class="n">createPair</span><span class="p">(</span><span class="s">&quot;media_id&quot;</span><span class="p">,</span> <span class="n">mediaId</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">()));</span>
-<a name="line-548"></a> <span class="n">form</span><span class="p">.</span><span class="n">addFile</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mediaUploadedPath</span><span class="p">,</span> <span class="nb">true</span><span class="p">);</span>
-<a name="line-549"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">segmentIndex</span> <span class="o">=</span> <span class="n">form</span><span class="p">.</span><span class="n">numberOfChunks</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-550"></a> <span class="p">}</span>
-<a name="line-551"></a> <span class="n">QByteArray</span> <span class="n">data</span><span class="p">(</span><span class="n">form</span><span class="p">.</span><span class="n">formData</span><span class="p">());</span>
-<a name="line-552"></a> <span class="n">data</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">form</span><span class="p">.</span><span class="n">createPair</span><span class="p">(</span><span class="s">&quot;segment_index&quot;</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">segmentIndex</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">()));</span>
-<a name="line-553"></a> <span class="n">data</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">form</span><span class="p">.</span><span class="n">createPair</span><span class="p">(</span><span class="s">&quot;media&quot;</span><span class="p">,</span> <span class="n">form</span><span class="p">.</span><span class="n">getChunk</span><span class="p">(</span><span class="n">segmentIndex</span><span class="p">)));</span>
-<a name="line-554"></a> <span class="n">data</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">form</span><span class="p">.</span><span class="n">border</span><span class="p">());</span>
-<a name="line-555"></a>
-<a name="line-556"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadUrl</span><span class="p">);</span>
-<a name="line-557"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">O0RequestParameter</span><span class="o">&gt;</span> <span class="n">reqParams</span> <span class="o">=</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">O0RequestParameter</span><span class="o">&gt;</span><span class="p">();</span>
-<a name="line-558"></a>
-<a name="line-559"></a> <span class="n">QNetworkRequest</span> <span class="nf">request</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
-<a name="line-560"></a> <span class="n">request</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">form</span><span class="p">.</span><span class="n">contentType</span><span class="p">());</span>
-<a name="line-561"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestor</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">reqParams</span><span class="p">,</span> <span class="n">data</span><span class="p">);</span>
-<a name="line-562"></a>
-<a name="line-563"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">TW_UPLOADAPPEND</span><span class="p">;</span>
-<a name="line-564"></a>
-<a name="line-565"></a> <span class="c1">// Reset form for later uploads</span>
+<a name="line-544"></a> <span class="n">dng_date_time_info</span> <span class="n">dti</span><span class="p">;</span>
+<a name="line-545"></a> <span class="n">dti</span><span class="p">.</span><span class="n">SetDateTime</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dngDateTime</span><span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getItemDateTime</span><span class="p">()));</span>
+<a name="line-546"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fDateTimeOriginal</span> <span class="o">=</span> <span class="n">dti</span><span class="p">;</span>
+<a name="line-547"></a>
+<a name="line-548"></a> <span class="n">dti</span><span class="p">.</span><span class="n">SetDateTime</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dngDateTime</span><span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getDigitizationDateTime</span><span class="p">(</span><span class="nb">true</span><span class="p">)));</span>
+<a name="line-549"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fDateTimeDigitized</span> <span class="o">=</span> <span class="n">dti</span><span class="p">;</span>
+<a name="line-550"></a>
+<a name="line-551"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">UpdateDateTime</span><span class="p">(</span><span class="n">dti</span><span class="p">);</span>
+<a name="line-552"></a>
+<a name="line-553"></a> <span class="c1">// String Tags</span>
+<a name="line-554"></a>
+<a name="line-555"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Image.Make&quot;</span><span class="p">);</span>
+<a name="line-556"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fMake</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-557"></a>
+<a name="line-558"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Image.Model&quot;</span><span class="p">);</span>
+<a name="line-559"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fModel</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-560"></a>
+<a name="line-561"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Image.Software&quot;</span><span class="p">);</span>
+<a name="line-562"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fSoftware</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-563"></a>
+<a name="line-564"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Image.ImageDescription&quot;</span><span class="p">);</span>
+<a name="line-565"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fImageDescription</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
<a name="line-566"></a>
-<a name="line-567"></a> <span class="k">if</span> <span class="p">(</span><span class="n">segmentIndex</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">segmentIndex</span><span class="p">)</span>
-<a name="line-568"></a> <span class="p">{</span>
-<a name="line-569"></a> <span class="n">form</span><span class="p">.</span><span class="n">reset</span><span class="p">();</span>
-<a name="line-570"></a> <span class="p">}</span>
-<a name="line-571"></a>
-<a name="line-572"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-573"></a><span class="p">}</span>
-<a name="line-574"></a>
-<a name="line-575"></a><span class="kt">bool</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">addPhotoFinalize</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">mediaId</span><span class="p">)</span>
-<a name="line-576"></a><span class="p">{</span>
-<a name="line-577"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;addPhotoFinalize: &quot;</span><span class="p">;</span>
+<a name="line-567"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Image.Artist&quot;</span><span class="p">);</span>
+<a name="line-568"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fArtist</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-569"></a>
+<a name="line-570"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Image.Copyright&quot;</span><span class="p">);</span>
+<a name="line-571"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fCopyright</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-572"></a>
+<a name="line-573"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Photo.UserComment&quot;</span><span class="p">);</span>
+<a name="line-574"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fUserComment</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-575"></a>
+<a name="line-576"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Image.CameraSerialNumber&quot;</span><span class="p">);</span>
+<a name="line-577"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fCameraSerialNumber</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
<a name="line-578"></a>
-<a name="line-579"></a> <span class="n">TwMPForm</span> <span class="n">form</span><span class="p">;</span>
-<a name="line-580"></a>
-<a name="line-581"></a> <span class="n">form</span><span class="p">.</span><span class="n">addPair</span><span class="p">(</span><span class="n">form</span><span class="p">.</span><span class="n">createPair</span><span class="p">(</span><span class="s">&quot;command&quot;</span><span class="p">,</span> <span class="s">&quot;FINALIZE&quot;</span><span class="p">));</span>
-<a name="line-582"></a> <span class="n">form</span><span class="p">.</span><span class="n">addPair</span><span class="p">(</span><span class="n">form</span><span class="p">.</span><span class="n">createPair</span><span class="p">(</span><span class="s">&quot;media_id&quot;</span><span class="p">,</span> <span class="n">mediaId</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">()));</span>
-<a name="line-583"></a> <span class="n">form</span><span class="p">.</span><span class="n">finish</span><span class="p">();</span>
+<a name="line-579"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSLatitudeRef&quot;</span><span class="p">);</span>
+<a name="line-580"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSLatitudeRef</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-581"></a>
+<a name="line-582"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSLongitudeRef&quot;</span><span class="p">);</span>
+<a name="line-583"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSLongitudeRef</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
<a name="line-584"></a>
-<a name="line-585"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">form</span><span class="p">.</span><span class="n">formData</span><span class="p">();</span>
-<a name="line-586"></a>
-<a name="line-587"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadUrl</span><span class="p">);</span>
-<a name="line-588"></a>
-<a name="line-589"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">O0RequestParameter</span><span class="o">&gt;</span> <span class="n">reqParams</span> <span class="o">=</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">O0RequestParameter</span><span class="o">&gt;</span><span class="p">();</span>
+<a name="line-585"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSSatellites&quot;</span><span class="p">);</span>
+<a name="line-586"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSSatellites</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-587"></a>
+<a name="line-588"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSStatus&quot;</span><span class="p">);</span>
+<a name="line-589"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSStatus</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
<a name="line-590"></a>
-<a name="line-591"></a> <span class="n">QNetworkRequest</span> <span class="nf">request</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
-<a name="line-592"></a> <span class="n">request</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">form</span><span class="p">.</span><span class="n">contentType</span><span class="p">());</span>
-<a name="line-593"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestor</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">reqParams</span><span class="p">,</span> <span class="n">form</span><span class="p">.</span><span class="n">formData</span><span class="p">());</span>
-<a name="line-594"></a>
-<a name="line-595"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">TW_UPLOADFINALIZE</span><span class="p">;</span>
+<a name="line-591"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSMeasureMode&quot;</span><span class="p">);</span>
+<a name="line-592"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSMeasureMode</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-593"></a>
+<a name="line-594"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSSpeedRef&quot;</span><span class="p">);</span>
+<a name="line-595"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSSpeedRef</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
<a name="line-596"></a>
-<a name="line-597"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-598"></a><span class="p">}</span>
+<a name="line-597"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSTrackRef&quot;</span><span class="p">);</span>
+<a name="line-598"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSTrackRef</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
<a name="line-599"></a>
-<a name="line-600"></a><span class="kt">void</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">getUserName</span><span class="p">()</span>
-<a name="line-601"></a><span class="p">{</span>
-<a name="line-602"></a> <span class="cm">/*</span>
-<a name="line-603"></a><span class="cm"> * The endpoint below allows to get more than just account name (e.g. profile avatar, links to tweets posted, etc.)</span>
-<a name="line-604"></a><span class="cm"> * Look at debug message printed to console for futher ideas and exploitation</span>
-<a name="line-605"></a><span class="cm"> */</span>
-<a name="line-606"></a> <span class="n">QUrl</span> <span class="n">url</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://api.twitter.com/1.1/account/verify_credentials.json&quot;</span><span class="p">));</span>
-<a name="line-607"></a>
-<a name="line-608"></a> <span class="n">QNetworkRequest</span> <span class="nf">request</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
-<a name="line-609"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">O0RequestParameter</span><span class="o">&gt;</span> <span class="n">reqParams</span> <span class="o">=</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">O0RequestParameter</span><span class="o">&gt;</span><span class="p">();</span>
-<a name="line-610"></a>
-<a name="line-611"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestor</span><span class="o">-&gt;</span><span class="n">get</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">reqParams</span><span class="p">);</span>
-<a name="line-612"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">TW_USERNAME</span><span class="p">;</span>
-<a name="line-613"></a>
-<a name="line-614"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-615"></a><span class="p">}</span>
-<a name="line-616"></a>
-<a name="line-617"></a><span class="kt">void</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">createTweet</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">mediaId</span><span class="p">)</span>
-<a name="line-618"></a><span class="p">{</span>
-<a name="line-619"></a> <span class="n">QUrl</span> <span class="n">url</span> <span class="o">=</span> <span class="n">QUrl</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://api.twitter.com/1.1/statuses/update.json&quot;</span><span class="p">));</span>
+<a name="line-600"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSSpeedRef&quot;</span><span class="p">);</span>
+<a name="line-601"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSSpeedRef</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-602"></a>
+<a name="line-603"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSImgDirectionRef&quot;</span><span class="p">);</span>
+<a name="line-604"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSSpeedRef</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-605"></a>
+<a name="line-606"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSMapDatum&quot;</span><span class="p">);</span>
+<a name="line-607"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSMapDatum</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-608"></a>
+<a name="line-609"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestLatitudeRef&quot;</span><span class="p">);</span>
+<a name="line-610"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestLatitudeRef</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-611"></a>
+<a name="line-612"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestLongitudeRef&quot;</span><span class="p">);</span>
+<a name="line-613"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestLongitudeRef</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-614"></a>
+<a name="line-615"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestBearingRef&quot;</span><span class="p">);</span>
+<a name="line-616"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestBearingRef</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-617"></a>
+<a name="line-618"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestDistanceRef&quot;</span><span class="p">);</span>
+<a name="line-619"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestDistanceRef</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
<a name="line-620"></a>
-<a name="line-621"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">O0RequestParameter</span><span class="o">&gt;</span> <span class="n">reqParams</span> <span class="o">=</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">O0RequestParameter</span><span class="o">&gt;</span><span class="p">();</span>
-<a name="line-622"></a> <span class="n">reqParams</span> <span class="o">&lt;&lt;</span> <span class="n">O0RequestParameter</span><span class="p">(</span><span class="n">QByteArray</span><span class="p">(</span><span class="s">&quot;status&quot;</span><span class="p">),</span> <span class="n">QByteArray</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
-<a name="line-623"></a> <span class="n">reqParams</span> <span class="o">&lt;&lt;</span> <span class="n">O0RequestParameter</span><span class="p">(</span><span class="n">QByteArray</span><span class="p">(</span><span class="s">&quot;media_ids&quot;</span><span class="p">),</span> <span class="n">mediaId</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">());</span>
-<a name="line-624"></a> <span class="n">QByteArray</span> <span class="n">postData</span> <span class="o">=</span> <span class="n">O1</span><span class="o">::</span><span class="n">createQueryParameters</span><span class="p">(</span><span class="n">reqParams</span><span class="p">);</span>
-<a name="line-625"></a>
-<a name="line-626"></a> <span class="n">QNetworkRequest</span> <span class="nf">request</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
-<a name="line-627"></a> <span class="n">request</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="n">O2_MIME_TYPE_XFORM</span><span class="p">));</span>
-<a name="line-628"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestor</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">reqParams</span><span class="p">,</span> <span class="n">postData</span><span class="p">);</span>
+<a name="line-621"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSProcessingMethod&quot;</span><span class="p">);</span>
+<a name="line-622"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSProcessingMethod</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-623"></a>
+<a name="line-624"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSAreaInformation&quot;</span><span class="p">);</span>
+<a name="line-625"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSAreaInformation</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-626"></a>
+<a name="line-627"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDateStamp&quot;</span><span class="p">);</span>
+<a name="line-628"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDateStamp</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
<a name="line-629"></a>
-<a name="line-630"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">TW_CREATETWEET</span><span class="p">;</span>
-<a name="line-631"></a><span class="p">}</span>
-<a name="line-632"></a>
-<a name="line-633"></a><span class="kt">void</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">slotCheckUploadStatus</span><span class="p">()</span>
-<a name="line-634"></a><span class="p">{</span>
-<a name="line-635"></a> <span class="n">QUrl</span> <span class="n">url</span> <span class="o">=</span> <span class="n">QUrl</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadUrl</span><span class="p">);</span>
-<a name="line-636"></a>
-<a name="line-637"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">O0RequestParameter</span><span class="o">&gt;</span> <span class="n">reqParams</span> <span class="o">=</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">O0RequestParameter</span><span class="o">&gt;</span><span class="p">();</span>
-<a name="line-638"></a> <span class="n">reqParams</span> <span class="o">&lt;&lt;</span> <span class="n">O0RequestParameter</span><span class="p">(</span><span class="n">QByteArray</span><span class="p">(</span><span class="s">&quot;command&quot;</span><span class="p">),</span> <span class="n">QByteArray</span><span class="p">(</span><span class="s">&quot;STATUS&quot;</span><span class="p">));</span>
-<a name="line-639"></a> <span class="n">reqParams</span> <span class="o">&lt;&lt;</span> <span class="n">O0RequestParameter</span><span class="p">(</span><span class="n">QByteArray</span><span class="p">(</span><span class="s">&quot;media_id&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mediaId</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">());</span>
-<a name="line-640"></a>
-<a name="line-641"></a> <span class="n">QUrlQuery</span> <span class="n">query</span><span class="p">;</span>
-<a name="line-642"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;command&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;STATUS&quot;</span><span class="p">));</span>
-<a name="line-643"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;media_id&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mediaId</span><span class="p">);</span>
-<a name="line-644"></a>
-<a name="line-645"></a> <span class="n">url</span><span class="p">.</span><span class="n">setQuery</span><span class="p">(</span><span class="n">query</span><span class="p">);</span>
-<a name="line-646"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">url</span><span class="p">.</span><span class="n">toString</span><span class="p">();</span>
-<a name="line-647"></a>
-<a name="line-648"></a> <span class="n">QNetworkRequest</span> <span class="nf">request</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
-<a name="line-649"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestor</span><span class="o">-&gt;</span><span class="n">get</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">reqParams</span><span class="p">);</span>
-<a name="line-650"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">TW_UPLOADSTATUSCHECK</span><span class="p">;</span>
-<a name="line-651"></a><span class="p">}</span>
-<a name="line-652"></a>
-<a name="line-653"></a><span class="kt">void</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">slotFinished</span><span class="p">(</span><span class="n">QNetworkReply</span><span class="o">*</span> <span class="n">reply</span><span class="p">)</span>
-<a name="line-654"></a><span class="p">{</span>
-<a name="line-655"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;TwTalker::slotFinished&quot;</span><span class="p">;</span>
-<a name="line-656"></a>
-<a name="line-657"></a> <span class="k">if</span> <span class="p">(</span><span class="n">reply</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
-<a name="line-658"></a> <span class="p">{</span>
-<a name="line-659"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-660"></a> <span class="p">}</span>
-<a name="line-661"></a>
-<a name="line-662"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-663"></a>
-<a name="line-664"></a> <span class="k">if</span> <span class="p">(</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">error</span><span class="p">()</span> <span class="o">!=</span> <span class="n">QNetworkReply</span><span class="o">::</span><span class="n">NoError</span><span class="p">)</span>
-<a name="line-665"></a> <span class="p">{</span>
-<a name="line-666"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">!=</span> <span class="n">Private</span><span class="o">::</span><span class="n">TW_CREATEFOLDER</span><span class="p">)</span>
-<a name="line-667"></a> <span class="p">{</span>
-<a name="line-668"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">readAll</span><span class="p">();</span>
-<a name="line-669"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;status code: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">attribute</span><span class="p">(</span> <span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">HttpStatusCodeAttribute</span> <span class="p">).</span><span class="n">toInt</span><span class="p">();</span>
-<a name="line-670"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-671"></a> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">critical</span><span class="p">(</span><span class="n">QApplication</span><span class="o">::</span><span class="n">activeWindow</span><span class="p">(),</span>
-<a name="line-672"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Error&quot;</span><span class="p">),</span> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">errorString</span><span class="p">());</span>
-<a name="line-673"></a>
-<a name="line-674"></a> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">deleteLater</span><span class="p">();</span>
-<a name="line-675"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-676"></a> <span class="p">}</span>
-<a name="line-677"></a> <span class="p">}</span>
-<a name="line-678"></a>
-<a name="line-679"></a> <span class="n">QByteArray</span> <span class="n">buffer</span> <span class="o">=</span> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">readAll</span><span class="p">();</span>
-<a name="line-680"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;status code: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">attribute</span><span class="p">(</span> <span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">HttpStatusCodeAttribute</span> <span class="p">).</span><span class="n">toInt</span><span class="p">();</span>
-<a name="line-681"></a> <span class="k">static</span> <span class="kt">int</span> <span class="n">segmentIndex</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-682"></a>
-<a name="line-683"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span><span class="p">)</span>
-<a name="line-684"></a> <span class="p">{</span>
-<a name="line-685"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">TW_LISTFOLDERS</span><span class="p">:</span>
-<a name="line-686"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;In TW_LISTFOLDERS&quot;</span><span class="p">;</span>
-<a name="line-687"></a> <span class="n">parseResponseListFolders</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
-<a name="line-688"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-689"></a>
-<a name="line-690"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">TW_CREATEFOLDER</span><span class="p">:</span>
-<a name="line-691"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;In TW_CREATEFOLDER&quot;</span><span class="p">;</span>
-<a name="line-692"></a> <span class="n">parseResponseCreateFolder</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
-<a name="line-693"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-694"></a>
-<a name="line-695"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">TW_ADDPHOTO</span><span class="p">:</span>
-<a name="line-696"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;In TW_ADDPHOTO&quot;</span><span class="p">;</span>
-<a name="line-697"></a> <span class="n">parseResponseAddPhoto</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
-<a name="line-698"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-699"></a>
-<a name="line-700"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">TW_USERNAME</span><span class="p">:</span>
-<a name="line-701"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;In TW_USERNAME&quot;</span><span class="p">;</span>
-<a name="line-702"></a> <span class="n">parseResponseUserName</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
-<a name="line-703"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-704"></a>
-<a name="line-705"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">TW_CREATETWEET</span><span class="p">:</span>
-<a name="line-706"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;In TW_CREATETWEET&quot;</span><span class="p">;</span>
-<a name="line-707"></a> <span class="n">parseResponseCreateTweet</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
-<a name="line-708"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-709"></a>
-<a name="line-710"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">TW_UPLOADINIT</span><span class="p">:</span>
-<a name="line-711"></a> <span class="n">segmentIndex</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-712"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;In TW_UPLOADINIT&quot;</span><span class="p">;</span>
-<a name="line-713"></a> <span class="n">parseResponseAddPhotoInit</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
-<a name="line-714"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-715"></a>
-<a name="line-716"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">TW_UPLOADAPPEND</span><span class="p">:</span>
-<a name="line-717"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;In TW_UPLOADAPPEND (at index &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">segmentIndex</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;)&quot;</span><span class="p">;</span>
-<a name="line-718"></a> <span class="n">segmentIndex</span><span class="o">++</span><span class="p">;</span>
-<a name="line-719"></a> <span class="n">parseResponseAddPhotoAppend</span><span class="p">(</span><span class="n">buffer</span><span class="p">,</span> <span class="n">segmentIndex</span><span class="p">);</span>
-<a name="line-720"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-721"></a>
-<a name="line-722"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">TW_UPLOADSTATUSCHECK</span><span class="p">:</span>
-<a name="line-723"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;In TW_UPLOADSTATUSCHECK&quot;</span><span class="p">;</span>
-<a name="line-724"></a> <span class="n">parseCheckUploadStatus</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
-<a name="line-725"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-726"></a>
-<a name="line-727"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">TW_UPLOADFINALIZE</span><span class="p">:</span>
-<a name="line-728"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;In TW_UPLOADFINALIZE&quot;</span><span class="p">;</span>
-<a name="line-729"></a> <span class="n">parseResponseAddPhotoFinalize</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
-<a name="line-730"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-731"></a>
-<a name="line-732"></a> <span class="k">default</span><span class="o">:</span>
-<a name="line-733"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-734"></a> <span class="p">}</span>
-<a name="line-735"></a>
-<a name="line-736"></a> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">deleteLater</span><span class="p">();</span>
-<a name="line-737"></a><span class="p">}</span>
+<a name="line-630"></a> <span class="c1">// Rational Tags</span>
+<a name="line-631"></a>
+<a name="line-632"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.ExposureTime&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fExposureTime</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-633"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.FNumber&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fFNumber</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-634"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.ShutterSpeedValue&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fShutterSpeedValue</span> <span class="o">=</span> <span class="n">dng_srational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-635"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.ApertureValue&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fApertureValue</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-636"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.BrightnessValue&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fBrightnessValue</span> <span class="o">=</span> <span class="n">dng_srational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-637"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.ExposureBiasValue&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fExposureBiasValue</span> <span class="o">=</span> <span class="n">dng_srational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-638"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.MaxApertureValue&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fMaxApertureValue</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-639"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.FocalLength&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fFocalLength</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-640"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.DigitalZoomRatio&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fDigitalZoomRatio</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-641"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.SubjectDistance&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fSubjectDistance</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-642"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Image.BatteryLevel&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fBatteryLevelR</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-643"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.FocalPlaneXResolution&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fFocalPlaneXResolution</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-644"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.FocalPlaneYResolution&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fFocalPlaneYResolution</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-645"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSAltitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSAltitude</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-646"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDOP&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDOP</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-647"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSSpeed&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSSpeed</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-648"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSTrack&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSTrack</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-649"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSImgDirection&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSImgDirection</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-650"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestBearing&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestBearing</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-651"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestDistance&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestDistance</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-652"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSLatitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSLatitude</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-653"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSLatitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSLatitude</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-654"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSLatitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSLatitude</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-655"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSLongitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSLongitude</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-656"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSLongitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSLongitude</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-657"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSLongitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSLongitude</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-658"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSTimeStamp&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSTimeStamp</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-659"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSTimeStamp&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSTimeStamp</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-660"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSTimeStamp&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSTimeStamp</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-661"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestLatitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestLatitude</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-662"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestLatitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestLatitude</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-663"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestLatitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestLatitude</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-664"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestLongitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestLongitude</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-665"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestLongitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestLongitude</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-666"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestLongitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestLongitude</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-667"></a>
+<a name="line-668"></a> <span class="c1">// Integer Tags</span>
+<a name="line-669"></a>
+<a name="line-670"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.ExposureProgram&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fExposureProgram</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-671"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.ISOSpeedRatings&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fISOSpeedRatings</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-672"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.MeteringMode&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fMeteringMode</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-673"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.LightSource&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLightSource</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-674"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.Flash&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fFlash</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-675"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.SensingMethod&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fSensingMethod</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-676"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.FileSource&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fFileSource</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-677"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.SceneType&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fSceneType</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-678"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.CustomRendered&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fCustomRendered</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-679"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.ExposureMode&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fExposureMode</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-680"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.WhiteBalance&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fWhiteBalance</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-681"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.SceneCaptureType&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fSceneCaptureType</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-682"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.GainControl&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGainControl</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-683"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.Contrast&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fContrast</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-684"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.Saturation&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fSaturation</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-685"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.Sharpness&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fSharpness</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-686"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.SubjectDistanceRange&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fSubjectDistanceRange</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-687"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.FocalLengthIn35mmFilm&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fFocalLengthIn35mmFilm</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-688"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.ComponentsConfiguration&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fComponentsConfiguration</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-689"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.PixelXDimension&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fPixelXDimension</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-690"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.PixelYDimension&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fPixelYDimension</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-691"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.FocalPlaneResolutionUnit&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fFocalPlaneResolutionUnit</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-692"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSAltitudeRef&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSAltitudeRef</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-693"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDifferential&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDifferential</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-694"></a> <span class="kt">long</span> <span class="n">gpsVer1</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-695"></a> <span class="kt">long</span> <span class="n">gpsVer2</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-696"></a> <span class="kt">long</span> <span class="n">gpsVer3</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-697"></a> <span class="kt">long</span> <span class="n">gpsVer4</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-698"></a> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSVersionID&quot;</span><span class="p">,</span> <span class="n">gpsVer1</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-699"></a> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSVersionID&quot;</span><span class="p">,</span> <span class="n">gpsVer2</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-700"></a> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSVersionID&quot;</span><span class="p">,</span> <span class="n">gpsVer3</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
+<a name="line-701"></a> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSVersionID&quot;</span><span class="p">,</span> <span class="n">gpsVer4</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-702"></a> <span class="kt">long</span> <span class="n">gpsVer</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-703"></a> <span class="n">gpsVer</span> <span class="o">+=</span> <span class="n">gpsVer1</span> <span class="o">&lt;&lt;</span> <span class="mi">24</span><span class="p">;</span>
+<a name="line-704"></a> <span class="n">gpsVer</span> <span class="o">+=</span> <span class="n">gpsVer2</span> <span class="o">&lt;&lt;</span> <span class="mi">16</span><span class="p">;</span>
+<a name="line-705"></a> <span class="n">gpsVer</span> <span class="o">+=</span> <span class="n">gpsVer3</span> <span class="o">&lt;&lt;</span> <span class="mi">8</span><span class="p">;</span>
+<a name="line-706"></a> <span class="n">gpsVer</span> <span class="o">+=</span> <span class="n">gpsVer4</span><span class="p">;</span>
+<a name="line-707"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSVersionID</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">gpsVer</span><span class="p">;</span>
+<a name="line-708"></a>
+<a name="line-709"></a> <span class="c1">// Nikon Markernotes</span>
+<a name="line-710"></a>
+<a name="line-711"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Nikon3.Lens&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-712"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Nikon3.Lens&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-713"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Nikon3.Lens&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-714"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Nikon3.Lens&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">3</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-715"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Nikon3.ISOSpeed&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fISOSpeedRatings</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-716"></a>
+<a name="line-717"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Nikon3.SerialNO&quot;</span><span class="p">);</span>
+<a name="line-718"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">str</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;NO=&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
+<a name="line-719"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fCameraSerialNumber</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-720"></a>
+<a name="line-721"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Nikon3.SerialNumber&quot;</span><span class="p">);</span>
+<a name="line-722"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fCameraSerialNumber</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-723"></a>
+<a name="line-724"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Nikon3.ShutterCount&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fImageNumber</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+<a name="line-725"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.NikonLd1.LensIDNumber&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensID</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">((</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">val</span><span class="p">)).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-726"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.NikonLd2.LensIDNumber&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensID</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">((</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">val</span><span class="p">)).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-727"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.NikonLd3.LensIDNumber&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensID</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">((</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">val</span><span class="p">)).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-728"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.NikonLd2.FocusDistance&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fSubjectDistance</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">((</span><span class="n">uint32</span><span class="p">)</span><span class="n">pow</span><span class="p">(</span><span class="mf">10.0</span><span class="p">,</span> <span class="n">val</span><span class="o">/</span><span class="mf">40.0</span><span class="p">),</span> <span class="mi">100</span><span class="p">);</span>
+<a name="line-729"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.NikonLd3.FocusDistance&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fSubjectDistance</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">((</span><span class="n">uint32</span><span class="p">)</span><span class="n">pow</span><span class="p">(</span><span class="mf">10.0</span><span class="p">,</span> <span class="n">val</span><span class="o">/</span><span class="mf">40.0</span><span class="p">),</span> <span class="mi">100</span><span class="p">);</span>
+<a name="line-730"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.NikonLd1.LensIDNumber&quot;</span><span class="p">);</span>
+<a name="line-731"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-732"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.NikonLd2.LensIDNumber&quot;</span><span class="p">);</span>
+<a name="line-733"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-734"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.NikonLd3.LensIDNumber&quot;</span><span class="p">);</span>
+<a name="line-735"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-736"></a>
+<a name="line-737"></a> <span class="c1">// Canon Markernotes</span>
<a name="line-738"></a>
-<a name="line-739"></a><span class="kt">void</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">parseResponseAddPhoto</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
-<a name="line-740"></a><span class="p">{</span>
-<a name="line-741"></a> <span class="n">QJsonParseError</span> <span class="n">err</span><span class="p">;</span>
-<a name="line-742"></a> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">err</span><span class="p">);</span>
-<a name="line-743"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;parseResponseAddPhoto: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">doc</span><span class="p">;</span>
-<a name="line-744"></a>
-<a name="line-745"></a> <span class="k">if</span> <span class="p">(</span><span class="n">err</span><span class="p">.</span><span class="n">error</span> <span class="o">!=</span> <span class="n">QJsonParseError</span><span class="o">::</span><span class="n">NoError</span><span class="p">)</span>
-<a name="line-746"></a> <span class="p">{</span>
-<a name="line-747"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-748"></a> <span class="n">emit</span> <span class="nf">signalAddPhotoFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to upload photo&quot;</span><span class="p">));</span>
-<a name="line-749"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-750"></a> <span class="p">}</span>
-<a name="line-751"></a>
-<a name="line-752"></a> <span class="n">QJsonObject</span> <span class="n">jsonObject</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">object</span><span class="p">();</span>
-<a name="line-753"></a> <span class="n">QString</span> <span class="n">mediaId</span> <span class="o">=</span> <span class="n">jsonObject</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;media_id_string&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">();</span>
-<a name="line-754"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;media id: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">mediaId</span><span class="p">;</span>
-<a name="line-755"></a>
-<a name="line-756"></a> <span class="c1">// We haven&#39;t emit signalAddPhotoSucceeded() here yet, since we need to update the status first</span>
+<a name="line-739"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Canon.SerialNumber&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fCameraSerialNumber</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">((</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">val</span><span class="p">)).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-740"></a><span class="cm">/*</span>
+<a name="line-741"></a><span class="cm"> if (meta.getExifTagLong(&quot;Exif.CanonCs.LensType&quot;, val)) exif-&gt;fLensID.Set_ASCII((QString::fromUtf8(&quot;%1&quot;).arg(val)).toLatin1().constData());</span>
+<a name="line-742"></a><span class="cm"> if (meta.getExifTagLong(&quot;Exif.CanonCs.FlashActivity&quot;, val)) exif-&gt;fFlash = (uint32)val;</span>
+<a name="line-743"></a><span class="cm"> if (meta.getExifTagLong(&quot;Exif.CanonFi.FileNumber&quot;, val)) exif-&gt;fImageNumber = (uint32)val;</span>
+<a name="line-744"></a><span class="cm"> if (meta.getExifTagLong(&quot;Exif.CanonCs.MaxAperture&quot;, val)) exif-&gt;fMaxApertureValue = dng_urational(val, 100000);</span>
+<a name="line-745"></a><span class="cm">*/</span>
+<a name="line-746"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.CanonCs.ExposureProgram&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span>
+<a name="line-747"></a> <span class="p">{</span>
+<a name="line-748"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">val</span><span class="p">)</span>
+<a name="line-749"></a> <span class="p">{</span>
+<a name="line-750"></a> <span class="k">case</span> <span class="mi">1</span><span class="o">:</span>
+<a name="line-751"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fExposureProgram</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
+<a name="line-752"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-753"></a>
+<a name="line-754"></a> <span class="k">case</span> <span class="mi">2</span><span class="o">:</span>
+<a name="line-755"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fExposureProgram</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
+<a name="line-756"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-757"></a>
-<a name="line-758"></a> <span class="n">createTweet</span><span class="p">(</span><span class="n">mediaId</span><span class="p">);</span>
-<a name="line-759"></a><span class="p">}</span>
-<a name="line-760"></a>
-<a name="line-761"></a><span class="kt">void</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">parseResponseAddPhotoInit</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
-<a name="line-762"></a><span class="p">{</span>
-<a name="line-763"></a> <span class="n">QJsonParseError</span> <span class="n">err</span><span class="p">;</span>
-<a name="line-764"></a> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">err</span><span class="p">);</span>
-<a name="line-765"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;parseResponseAddPhotoInit: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">doc</span><span class="p">;</span>
-<a name="line-766"></a>
-<a name="line-767"></a> <span class="k">if</span> <span class="p">(</span><span class="n">err</span><span class="p">.</span><span class="n">error</span> <span class="o">!=</span> <span class="n">QJsonParseError</span><span class="o">::</span><span class="n">NoError</span><span class="p">)</span>
-<a name="line-768"></a> <span class="p">{</span>
-<a name="line-769"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-770"></a> <span class="n">emit</span> <span class="nf">signalAddPhotoFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to upload photo&quot;</span><span class="p">));</span>
-<a name="line-771"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-772"></a> <span class="p">}</span>
-<a name="line-773"></a>
-<a name="line-774"></a> <span class="n">QJsonObject</span> <span class="n">jsonObject</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">object</span><span class="p">();</span>
-<a name="line-775"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mediaId</span> <span class="o">=</span> <span class="n">jsonObject</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;media_id_string&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">();</span>
-<a name="line-776"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;media id: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mediaId</span><span class="p">;</span>
-<a name="line-777"></a>
-<a name="line-778"></a> <span class="c1">// We haven&#39;t emit signalAddPhotoSucceeded() here yet, since we need to update the status first</span>
-<a name="line-779"></a>
-<a name="line-780"></a> <span class="n">addPhotoAppend</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mediaId</span><span class="p">);</span>
-<a name="line-781"></a><span class="p">}</span>
+<a name="line-758"></a> <span class="k">case</span> <span class="mi">3</span><span class="o">:</span>
+<a name="line-759"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fExposureProgram</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
+<a name="line-760"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-761"></a>
+<a name="line-762"></a> <span class="k">case</span> <span class="mi">4</span><span class="o">:</span>
+<a name="line-763"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fExposureProgram</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+<a name="line-764"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-765"></a>
+<a name="line-766"></a> <span class="k">default</span><span class="o">:</span>
+<a name="line-767"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-768"></a> <span class="p">}</span>
+<a name="line-769"></a> <span class="p">}</span>
+<a name="line-770"></a>
+<a name="line-771"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.CanonCs.MeteringMode&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span>
+<a name="line-772"></a> <span class="p">{</span>
+<a name="line-773"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">val</span><span class="p">)</span>
+<a name="line-774"></a> <span class="p">{</span>
+<a name="line-775"></a> <span class="k">case</span> <span class="mi">1</span><span class="o">:</span>
+<a name="line-776"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fMeteringMode</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
+<a name="line-777"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-778"></a>
+<a name="line-779"></a> <span class="k">case</span> <span class="mi">2</span><span class="o">:</span>
+<a name="line-780"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fMeteringMode</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+<a name="line-781"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-782"></a>
-<a name="line-783"></a><span class="kt">void</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">parseResponseAddPhotoAppend</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="cm">/*data*/</span><span class="p">,</span> <span class="kt">int</span> <span class="n">segmentIndex</span><span class="p">)</span>
-<a name="line-784"></a><span class="p">{</span>
-<a name="line-785"></a> <span class="cm">/* (Fev. 2019)</span>
-<a name="line-786"></a><span class="cm"> * Currently, we don&#39;t parse data of response from addPhotoAppend, since the response is with HTTP 204</span>
-<a name="line-787"></a><span class="cm"> * This is indeed an expected response code, because the response should be with an empty body.</span>
-<a name="line-788"></a><span class="cm"> * However, in order to keep a compatible prototype of parseResponse methodes and reserve for future change,</span>
-<a name="line-789"></a><span class="cm"> * we should keep argument const QByteArray&amp; data.</span>
-<a name="line-790"></a><span class="cm"> */</span>
-<a name="line-791"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;parseResponseAddPhotoAppend: &quot;</span><span class="p">;</span>
-<a name="line-792"></a>
-<a name="line-793"></a> <span class="k">if</span> <span class="p">(</span><span class="n">segmentIndex</span> <span class="o">&lt;=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">segmentIndex</span><span class="p">)</span>
-<a name="line-794"></a> <span class="p">{</span>
-<a name="line-795"></a> <span class="n">addPhotoAppend</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mediaId</span><span class="p">,</span> <span class="n">segmentIndex</span><span class="p">);</span>
-<a name="line-796"></a> <span class="p">}</span>
-<a name="line-797"></a> <span class="k">else</span>
-<a name="line-798"></a> <span class="p">{</span>
-<a name="line-799"></a> <span class="n">addPhotoFinalize</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mediaId</span><span class="p">);</span>
-<a name="line-800"></a> <span class="p">}</span>
-<a name="line-801"></a><span class="p">}</span>
-<a name="line-802"></a>
-<a name="line-803"></a><span class="kt">void</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">parseResponseAddPhotoFinalize</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
-<a name="line-804"></a><span class="p">{</span>
-<a name="line-805"></a> <span class="n">QJsonParseError</span> <span class="n">err</span><span class="p">;</span>
-<a name="line-806"></a> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">err</span><span class="p">);</span>
-<a name="line-807"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;parseResponseAddPhotoFinalize: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">doc</span><span class="p">;</span>
+<a name="line-783"></a> <span class="k">case</span> <span class="mi">3</span><span class="o">:</span>
+<a name="line-784"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fMeteringMode</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
+<a name="line-785"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-786"></a>
+<a name="line-787"></a> <span class="k">case</span> <span class="mi">4</span><span class="o">:</span>
+<a name="line-788"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fMeteringMode</span> <span class="o">=</span> <span class="mi">6</span><span class="p">;</span>
+<a name="line-789"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-790"></a>
+<a name="line-791"></a> <span class="k">case</span> <span class="mi">5</span><span class="o">:</span>
+<a name="line-792"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fMeteringMode</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
+<a name="line-793"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-794"></a>
+<a name="line-795"></a> <span class="k">default</span><span class="o">:</span>
+<a name="line-796"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-797"></a> <span class="p">}</span>
+<a name="line-798"></a> <span class="p">}</span>
+<a name="line-799"></a>
+<a name="line-800"></a> <span class="kt">long</span> <span class="n">canonLensUnits</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+<a name="line-801"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.CanonCs.Lens&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span> <span class="n">canonLensUnits</span> <span class="o">=</span> <span class="n">num</span><span class="p">;</span>
+<a name="line-802"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.CanonCs.Lens&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">canonLensUnits</span><span class="p">);</span>
+<a name="line-803"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.CanonCs.Lens&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">canonLensUnits</span><span class="p">);</span>
+<a name="line-804"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Canon.FocalLength&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fFocalLength</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">canonLensUnits</span><span class="p">);</span>
+<a name="line-805"></a> <span class="kt">long</span> <span class="n">canonLensType</span> <span class="o">=</span> <span class="mi">65535</span><span class="p">;</span>
+<a name="line-806"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.CanonCs.LensType&quot;</span><span class="p">,</span> <span class="n">canonLensType</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensID</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">((</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">canonLensType</span><span class="p">)).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-807"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Canon.LensModel&quot;</span><span class="p">);</span>
<a name="line-808"></a>
-<a name="line-809"></a> <span class="k">if</span> <span class="p">(</span><span class="n">err</span><span class="p">.</span><span class="n">error</span> <span class="o">!=</span> <span class="n">QJsonParseError</span><span class="o">::</span><span class="n">NoError</span><span class="p">)</span>
-<a name="line-810"></a> <span class="p">{</span>
-<a name="line-811"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-812"></a> <span class="n">emit</span> <span class="nf">signalAddPhotoFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to upload photo&quot;</span><span class="p">));</span>
-<a name="line-813"></a>
-<a name="line-814"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-815"></a> <span class="p">}</span>
-<a name="line-816"></a>
-<a name="line-817"></a> <span class="n">QJsonObject</span> <span class="n">jsonObject</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">object</span><span class="p">();</span>
-<a name="line-818"></a> <span class="n">QJsonValue</span> <span class="n">processingInfo</span> <span class="o">=</span> <span class="n">jsonObject</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;processing_info&quot;</span><span class="p">)];</span>
-<a name="line-819"></a>
-<a name="line-820"></a> <span class="k">if</span> <span class="p">(</span><span class="n">processingInfo</span> <span class="o">!=</span> <span class="n">QJsonValue</span><span class="o">::</span><span class="n">Undefined</span><span class="p">)</span>
-<a name="line-821"></a> <span class="p">{</span>
-<a name="line-822"></a> <span class="n">QString</span> <span class="n">state</span> <span class="o">=</span> <span class="n">processingInfo</span><span class="p">.</span><span class="n">toObject</span><span class="p">()[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;state&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">();</span>
-<a name="line-823"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;state: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">state</span><span class="p">;</span>
-<a name="line-824"></a>
-<a name="line-825"></a> <span class="k">if</span> <span class="p">(</span><span class="n">state</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;pending&quot;</span><span class="p">))</span>
-<a name="line-826"></a> <span class="p">{</span>
-<a name="line-827"></a> <span class="n">QTimer</span><span class="o">::</span><span class="n">singleShot</span><span class="p">(</span><span class="n">processingInfo</span><span class="p">.</span><span class="n">toObject</span><span class="p">()[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;check_after_secs&quot;</span><span class="p">)].</span><span class="n">toInt</span><span class="p">()</span><span class="o">*</span><span class="mi">1000</span> <span class="cm">/*msec*/</span><span class="p">,</span>
-<a name="line-828"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotCheckUploadStatus</span><span class="p">()));</span>
-<a name="line-829"></a> <span class="p">}</span>
-<a name="line-830"></a> <span class="p">}</span>
-<a name="line-831"></a> <span class="k">else</span>
-<a name="line-832"></a> <span class="p">{</span>
-<a name="line-833"></a> <span class="c1">// We haven&#39;t emit signalAddPhotoSucceeded() here yet, since we need to update the status first</span>
-<a name="line-834"></a>
-<a name="line-835"></a> <span class="n">createTweet</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mediaId</span><span class="p">);</span>
-<a name="line-836"></a> <span class="p">}</span>
-<a name="line-837"></a><span class="p">}</span>
-<a name="line-838"></a>
-<a name="line-839"></a><span class="kt">void</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">parseCheckUploadStatus</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
-<a name="line-840"></a><span class="p">{</span>
-<a name="line-841"></a> <span class="n">QJsonParseError</span> <span class="n">err</span><span class="p">;</span>
-<a name="line-842"></a> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">err</span><span class="p">);</span>
-<a name="line-843"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;parseCheckUploadStatus: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">doc</span><span class="p">;</span>
-<a name="line-844"></a>
-<a name="line-845"></a> <span class="k">if</span> <span class="p">(</span><span class="n">err</span><span class="p">.</span><span class="n">error</span> <span class="o">!=</span> <span class="n">QJsonParseError</span><span class="o">::</span><span class="n">NoError</span><span class="p">)</span>
-<a name="line-846"></a> <span class="p">{</span>
-<a name="line-847"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-848"></a> <span class="n">emit</span> <span class="nf">signalAddPhotoFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to upload photo&quot;</span><span class="p">));</span>
-<a name="line-849"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-850"></a> <span class="p">}</span>
+<a name="line-809"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-810"></a> <span class="p">{</span>
+<a name="line-811"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-812"></a> <span class="p">}</span>
+<a name="line-813"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">canonLensType</span> <span class="o">!=</span> <span class="mi">65535</span><span class="p">)</span>
+<a name="line-814"></a> <span class="p">{</span>
+<a name="line-815"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.CanonCs.LensType&quot;</span><span class="p">);</span>
+<a name="line-816"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-817"></a> <span class="p">}</span>
+<a name="line-818"></a>
+<a name="line-819"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Canon.OwnerName&quot;</span><span class="p">);</span>
+<a name="line-820"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fOwnerName</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-821"></a>
+<a name="line-822"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Canon.FirmwareVersion&quot;</span><span class="p">);</span>
+<a name="line-823"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">str</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Firmware&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
+<a name="line-824"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">str</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Version&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
+<a name="line-825"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fFirmware</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-826"></a>
+<a name="line-827"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.CanonSi.ISOSpeed&quot;</span><span class="p">);</span>
+<a name="line-828"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fISOSpeedRatings</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">toInt</span><span class="p">();</span>
+<a name="line-829"></a>
+<a name="line-830"></a> <span class="c1">// Pentax Markernotes</span>
+<a name="line-831"></a>
+<a name="line-832"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Pentax.LensType&quot;</span><span class="p">);</span>
+<a name="line-833"></a>
+<a name="line-834"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-835"></a> <span class="p">{</span>
+<a name="line-836"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-837"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">TrimLeadingBlanks</span><span class="p">();</span>
+<a name="line-838"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">TrimTrailingBlanks</span><span class="p">();</span>
+<a name="line-839"></a> <span class="p">}</span>
+<a name="line-840"></a>
+<a name="line-841"></a> <span class="kt">long</span> <span class="n">pentaxLensId1</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-842"></a> <span class="kt">long</span> <span class="n">pentaxLensId2</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-843"></a>
+<a name="line-844"></a> <span class="k">if</span> <span class="p">((</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Pentax.LensType&quot;</span><span class="p">,</span> <span class="n">pentaxLensId1</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="o">&amp;&amp;</span>
+<a name="line-845"></a> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Pentax.LensType&quot;</span><span class="p">,</span> <span class="n">pentaxLensId2</span><span class="p">,</span> <span class="mi">1</span><span class="p">)))</span>
+<a name="line-846"></a> <span class="p">{</span>
+<a name="line-847"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensID</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">pentaxLensId1</span><span class="p">,</span> <span class="n">pentaxLensId2</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-848"></a> <span class="p">}</span>
+<a name="line-849"></a>
+<a name="line-850"></a> <span class="c1">// Olympus Makernotes</span>
<a name="line-851"></a>
-<a name="line-852"></a> <span class="n">QJsonObject</span> <span class="n">jsonObject</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">object</span><span class="p">();</span>
-<a name="line-853"></a> <span class="n">QJsonObject</span> <span class="n">processingInfo</span> <span class="o">=</span> <span class="n">jsonObject</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;processing_info&quot;</span><span class="p">)].</span><span class="n">toObject</span><span class="p">();</span>
-<a name="line-854"></a> <span class="n">QString</span> <span class="n">state</span> <span class="o">=</span> <span class="n">processingInfo</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;state&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">();</span>
-<a name="line-855"></a>
-<a name="line-856"></a> <span class="k">if</span> <span class="p">(</span><span class="n">state</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;in_progress&quot;</span><span class="p">))</span>
-<a name="line-857"></a> <span class="p">{</span>
-<a name="line-858"></a> <span class="n">QTimer</span><span class="o">::</span><span class="n">singleShot</span><span class="p">(</span><span class="n">processingInfo</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;check_after_secs&quot;</span><span class="p">)].</span><span class="n">toInt</span><span class="p">()</span><span class="o">*</span><span class="mi">1000</span> <span class="cm">/*msec*/</span><span class="p">,</span> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotCheckUploadStatus</span><span class="p">()));</span>
-<a name="line-859"></a> <span class="p">}</span>
-<a name="line-860"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">state</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;failed&quot;</span><span class="p">))</span>
-<a name="line-861"></a> <span class="p">{</span>
-<a name="line-862"></a> <span class="n">QJsonObject</span> <span class="n">error</span> <span class="o">=</span> <span class="n">processingInfo</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;error&quot;</span><span class="p">)].</span><span class="n">toObject</span><span class="p">();</span>
-<a name="line-863"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-864"></a> <span class="n">emit</span> <span class="nf">signalAddPhotoFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to upload photo</span><span class="se">\n</span><span class="s">&quot;</span>
-<a name="line-865"></a> <span class="s">&quot;Code: %1, name: %2, message: %3&quot;</span><span class="p">,</span>
-<a name="line-866"></a> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">error</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;code&quot;</span><span class="p">)].</span><span class="n">toInt</span><span class="p">()),</span>
-<a name="line-867"></a> <span class="n">error</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;name&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">(),</span>
-<a name="line-868"></a> <span class="n">error</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;message&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">()));</span>
-<a name="line-869"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-870"></a> <span class="p">}</span>
-<a name="line-871"></a> <span class="k">else</span> <span class="c1">// succeeded</span>
-<a name="line-872"></a> <span class="p">{</span>
-<a name="line-873"></a> <span class="c1">// We haven&#39;t emit signalAddPhotoSucceeded() here yet, since we need to update the status first</span>
-<a name="line-874"></a>
-<a name="line-875"></a> <span class="n">createTweet</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mediaId</span><span class="p">);</span>
-<a name="line-876"></a> <span class="p">}</span>
-<a name="line-877"></a><span class="p">}</span>
+<a name="line-852"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.OlympusEq.SerialNumber&quot;</span><span class="p">);</span>
+<a name="line-853"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fCameraSerialNumber</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-854"></a>
+<a name="line-855"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.OlympusEq.LensSerialNumber&quot;</span><span class="p">);</span>
+<a name="line-856"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensSerialNumber</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-857"></a>
+<a name="line-858"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.OlympusEq.LensModel&quot;</span><span class="p">);</span>
+<a name="line-859"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-860"></a>
+<a name="line-861"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.OlympusEq.MinFocalLength&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-862"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.OlympusEq.MaxFocalLength&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-863"></a>
+<a name="line-864"></a> <span class="c1">// Panasonic Makernotes</span>
+<a name="line-865"></a>
+<a name="line-866"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Panasonic.LensType&quot;</span><span class="p">);</span>
+<a name="line-867"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-868"></a>
+<a name="line-869"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Panasonic.LensSerialNumber&quot;</span><span class="p">);</span>
+<a name="line-870"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensSerialNumber</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-871"></a>
+<a name="line-872"></a> <span class="c1">// Sony Makernotes</span>
+<a name="line-873"></a>
+<a name="line-874"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Sony2.LensID&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span>
+<a name="line-875"></a> <span class="p">{</span>
+<a name="line-876"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensID</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">val</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-877"></a> <span class="p">}</span>
<a name="line-878"></a>
-<a name="line-879"></a><span class="kt">void</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">parseResponseUserName</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
-<a name="line-880"></a><span class="p">{</span>
-<a name="line-881"></a> <span class="n">QJsonParseError</span> <span class="n">err</span><span class="p">;</span>
-<a name="line-882"></a> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">err</span><span class="p">);</span>
-<a name="line-883"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;parseResponseUserName: &quot;</span><span class="o">&lt;&lt;</span><span class="n">doc</span><span class="p">;</span>
-<a name="line-884"></a>
-<a name="line-885"></a> <span class="k">if</span> <span class="p">(</span><span class="n">err</span><span class="p">.</span><span class="n">error</span> <span class="o">!=</span> <span class="n">QJsonParseError</span><span class="o">::</span><span class="n">NoError</span><span class="p">)</span>
-<a name="line-886"></a> <span class="p">{</span>
-<a name="line-887"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-888"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-889"></a> <span class="p">}</span>
+<a name="line-879"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Sony2.LensID&quot;</span><span class="p">);</span>
+<a name="line-880"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-881"></a>
+<a name="line-882"></a> <span class="c1">// -------------------------------------------</span>
+<a name="line-883"></a>
+<a name="line-884"></a> <span class="k">if</span> <span class="p">((</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">IsEmpty</span><span class="p">())</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">As_real64</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">As_real64</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">))</span>
+<a name="line-885"></a> <span class="p">{</span>
+<a name="line-886"></a> <span class="n">QString</span> <span class="n">lensName</span><span class="p">;</span>
+<a name="line-887"></a> <span class="n">QTextStream</span> <span class="nf">stream</span><span class="p">(</span><span class="o">&amp;</span><span class="n">lensName</span><span class="p">);</span>
+<a name="line-888"></a> <span class="kt">double</span> <span class="n">dval</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">n</span> <span class="o">/</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">d</span><span class="p">;</span>
+<a name="line-889"></a> <span class="n">stream</span> <span class="o">&lt;&lt;</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">dval</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="sc">&#39;f&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-890"></a>
-<a name="line-891"></a> <span class="n">QJsonObject</span> <span class="n">obj</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">object</span><span class="p">();</span>
-<a name="line-892"></a> <span class="n">QString</span> <span class="n">name</span> <span class="o">=</span> <span class="n">obj</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;name&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">();</span>
-<a name="line-893"></a> <span class="n">QString</span> <span class="n">screenName</span> <span class="o">=</span> <span class="n">obj</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;screen_name&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">();</span>
-<a name="line-894"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;user full name: &quot;</span><span class="o">&lt;&lt;</span><span class="n">name</span><span class="p">;</span>
-<a name="line-895"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;user screen name: @&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">screenName</span><span class="p">;</span>
+<a name="line-891"></a> <span class="k">if</span> <span class="p">(</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">As_real64</span><span class="p">()</span> <span class="o">!=</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">As_real64</span><span class="p">())</span>
+<a name="line-892"></a> <span class="p">{</span>
+<a name="line-893"></a> <span class="n">dval</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">n</span> <span class="o">/</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">d</span><span class="p">;</span>
+<a name="line-894"></a> <span class="n">stream</span> <span class="o">&lt;&lt;</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;-%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">dval</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="sc">&#39;f&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-895"></a> <span class="p">}</span>
<a name="line-896"></a>
-<a name="line-897"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-898"></a> <span class="n">emit</span> <span class="nf">signalSetUserName</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;%1 (@%2)&quot;).arg(name).arg(screenName))</span><span class="p">;</span>
-<a name="line-899"></a><span class="p">}</span>
-<a name="line-900"></a>
-<a name="line-901"></a><span class="kt">void</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">parseResponseCreateTweet</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
-<a name="line-902"></a><span class="p">{</span>
-<a name="line-903"></a> <span class="n">QJsonParseError</span> <span class="n">err</span><span class="p">;</span>
-<a name="line-904"></a> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">err</span><span class="p">);</span>
-<a name="line-905"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;parseResponseCreateTweet: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">doc</span><span class="p">;</span>
-<a name="line-906"></a>
-<a name="line-907"></a> <span class="k">if</span> <span class="p">(</span><span class="n">err</span><span class="p">.</span><span class="n">error</span> <span class="o">!=</span> <span class="n">QJsonParseError</span><span class="o">::</span><span class="n">NoError</span><span class="p">)</span>
-<a name="line-908"></a> <span class="p">{</span>
-<a name="line-909"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-910"></a> <span class="n">emit</span> <span class="nf">signalAddPhotoFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to create tweet for photo uploaded&quot;</span><span class="p">));</span>
+<a name="line-897"></a> <span class="n">stream</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; mm&quot;</span><span class="p">;</span>
+<a name="line-898"></a>
+<a name="line-899"></a> <span class="k">if</span> <span class="p">(</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">As_real64</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-900"></a> <span class="p">{</span>
+<a name="line-901"></a> <span class="n">dval</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">n</span> <span class="o">/</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">d</span><span class="p">;</span>
+<a name="line-902"></a> <span class="n">stream</span> <span class="o">&lt;&lt;</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot; 1/%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">dval</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="sc">&#39;f&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-903"></a> <span class="p">}</span>
+<a name="line-904"></a>
+<a name="line-905"></a> <span class="k">if</span> <span class="p">((</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">3</span><span class="p">].</span><span class="n">As_real64</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+<a name="line-906"></a> <span class="p">(</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">As_real64</span><span class="p">()</span> <span class="o">!=</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">3</span><span class="p">].</span><span class="n">As_real64</span><span class="p">()))</span>
+<a name="line-907"></a> <span class="p">{</span>
+<a name="line-908"></a> <span class="n">dval</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">3</span><span class="p">].</span><span class="n">n</span> <span class="o">/</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">3</span><span class="p">].</span><span class="n">d</span><span class="p">;</span>
+<a name="line-909"></a> <span class="n">stream</span> <span class="o">&lt;&lt;</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;-%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">dval</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="sc">&#39;f&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-910"></a> <span class="p">}</span>
<a name="line-911"></a>
-<a name="line-912"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-913"></a> <span class="p">}</span>
+<a name="line-912"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">lensName</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-913"></a> <span class="p">}</span>
<a name="line-914"></a>
-<a name="line-915"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Tweet posted successfully!&quot;</span><span class="p">;</span>
-<a name="line-916"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-917"></a> <span class="n">emit</span> <span class="nf">signalAddPhotoSucceeded</span><span class="p">();</span>
-<a name="line-918"></a><span class="p">}</span>
-<a name="line-919"></a>
-<a name="line-920"></a><span class="kt">void</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">parseResponseListFolders</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
-<a name="line-921"></a><span class="p">{</span>
-<a name="line-922"></a> <span class="n">QJsonParseError</span> <span class="n">err</span><span class="p">;</span>
-<a name="line-923"></a> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">err</span><span class="p">);</span>
-<a name="line-924"></a>
-<a name="line-925"></a> <span class="k">if</span> <span class="p">(</span><span class="n">err</span><span class="p">.</span><span class="n">error</span> <span class="o">!=</span> <span class="n">QJsonParseError</span><span class="o">::</span><span class="n">NoError</span><span class="p">)</span>
-<a name="line-926"></a> <span class="p">{</span>
-<a name="line-927"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-928"></a> <span class="n">emit</span> <span class="nf">signalListAlbumsFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to list folders&quot;</span><span class="p">));</span>
-<a name="line-929"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-930"></a> <span class="p">}</span>
-<a name="line-931"></a>
-<a name="line-932"></a> <span class="n">QJsonObject</span> <span class="n">jsonObject</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">object</span><span class="p">();</span>
-<a name="line-933"></a>
-<a name="line-934"></a> <span class="c1">//qCDebug(DIGIKAM_WEBSERVICES_LOG) &lt;&lt; &quot;Json: &quot; &lt;&lt; doc;</span>
-<a name="line-935"></a>
-<a name="line-936"></a> <span class="n">QJsonArray</span> <span class="n">jsonArray</span> <span class="o">=</span> <span class="n">jsonObject</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;value&quot;</span><span class="p">)].</span><span class="n">toArray</span><span class="p">();</span>
-<a name="line-937"></a>
-<a name="line-938"></a> <span class="c1">//qCDebug(DIGIKAM_WEBSERVICES_LOG) &lt;&lt; &quot;Json response: &quot; &lt;&lt; jsonArray;</span>
+<a name="line-915"></a> <span class="c1">// Markernote backup.</span>
+<a name="line-916"></a>
+<a name="line-917"></a> <span class="n">QByteArray</span> <span class="n">mkrnts</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagData</span><span class="p">(</span><span class="s">&quot;Exif.Photo.MakerNote&quot;</span><span class="p">);</span>
+<a name="line-918"></a>
+<a name="line-919"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">mkrnts</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-920"></a> <span class="p">{</span>
+<a name="line-921"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Backup Makernote (&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">mkrnts</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; bytes)&quot;</span> <span class="p">;</span>
+<a name="line-922"></a>
+<a name="line-923"></a><span class="hll"> <span class="n">dng_memory_allocator</span> <span class="nf">memalloc</span><span class="p">(</span><span class="n">gDefaultDNGMemoryAllocator</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-924"></a> <span class="n">dng_memory_stream</span> <span class="nf">stream</span><span class="p">(</span><span class="n">memalloc</span><span class="p">);</span>
+<a name="line-925"></a> <span class="n">stream</span><span class="p">.</span><span class="n">Put</span><span class="p">(</span><span class="n">mkrnts</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">mkrnts</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
+<a name="line-926"></a> <span class="n">AutoPtr</span><span class="o">&lt;</span><span class="n">dng_memory_block</span><span class="o">&gt;</span> <span class="n">block</span><span class="p">(</span><span class="n">host</span><span class="p">.</span><span class="n">Allocate</span><span class="p">(</span><span class="n">mkrnts</span><span class="p">.</span><span class="n">size</span><span class="p">()));</span>
+<a name="line-927"></a> <span class="n">stream</span><span class="p">.</span><span class="n">SetReadPosition</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-928"></a> <span class="n">stream</span><span class="p">.</span><span class="n">Get</span><span class="p">(</span><span class="n">block</span><span class="o">-&gt;</span><span class="n">Buffer</span><span class="p">(),</span> <span class="n">mkrnts</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
+<a name="line-929"></a>
+<a name="line-930"></a> <span class="k">if</span> <span class="p">(</span><span class="n">identifyMake</span><span class="p">.</span><span class="n">make</span> <span class="o">!=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Canon&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+<a name="line-931"></a> <span class="n">identifyMake</span><span class="p">.</span><span class="n">make</span> <span class="o">!=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Panasonic&quot;</span><span class="p">))</span>
+<a name="line-932"></a> <span class="p">{</span>
+<a name="line-933"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetMakerNote</span><span class="p">(</span><span class="n">block</span><span class="p">);</span>
+<a name="line-934"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetMakerNoteSafety</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-935"></a> <span class="p">}</span>
+<a name="line-936"></a>
+<a name="line-937"></a> <span class="kt">long</span> <span class="n">mknOffset</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-938"></a> <span class="n">QString</span> <span class="n">mknByteOrder</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.MakerNote.ByteOrder&quot;</span><span class="p">);</span>
<a name="line-939"></a>
-<a name="line-940"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">list</span><span class="p">;</span>
-<a name="line-941"></a> <span class="n">list</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">qMakePair</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;root&quot;</span><span class="p">)));</span>
-<a name="line-942"></a>
-<a name="line-943"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">QJsonValue</span><span class="o">&amp;</span> <span class="n">value</span><span class="p">,</span> <span class="n">jsonArray</span><span class="p">)</span>
-<a name="line-944"></a> <span class="p">{</span>
-<a name="line-945"></a> <span class="n">QString</span> <span class="n">path</span><span class="p">;</span>
-<a name="line-946"></a> <span class="n">QString</span> <span class="n">folderName</span><span class="p">;</span>
-<a name="line-947"></a> <span class="n">QJsonObject</span> <span class="n">folder</span><span class="p">;</span>
-<a name="line-948"></a>
-<a name="line-949"></a> <span class="n">QJsonObject</span> <span class="n">obj</span> <span class="o">=</span> <span class="n">value</span><span class="p">.</span><span class="n">toObject</span><span class="p">();</span>
-<a name="line-950"></a> <span class="n">folder</span> <span class="o">=</span> <span class="n">obj</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;folder&quot;</span><span class="p">)].</span><span class="n">toObject</span><span class="p">();</span>
-<a name="line-951"></a>
-<a name="line-952"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">folder</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-953"></a> <span class="p">{</span>
-<a name="line-954"></a> <span class="n">folderName</span> <span class="o">=</span> <span class="n">obj</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;name&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">();</span>
-<a name="line-955"></a> <span class="n">path</span> <span class="o">=</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">folderName</span><span class="p">;</span>
-<a name="line-956"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Folder Name is&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">folderName</span><span class="p">;</span>
-<a name="line-957"></a> <span class="n">list</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">qMakePair</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">folderName</span><span class="p">));</span>
+<a name="line-940"></a> <span class="k">if</span> <span class="p">((</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.MakerNote.Offset&quot;</span><span class="p">,</span> <span class="n">mknOffset</span><span class="p">))</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">mknByteOrder</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-941"></a> <span class="p">{</span>
+<a name="line-942"></a> <span class="n">dng_memory_stream</span> <span class="n">streamPriv</span><span class="p">(</span><span class="n">memalloc</span><span class="p">);</span>
+<a name="line-943"></a> <span class="n">streamPriv</span><span class="p">.</span><span class="n">SetBigEndian</span><span class="p">();</span>
+<a name="line-944"></a>
+<a name="line-945"></a> <span class="n">streamPriv</span><span class="p">.</span><span class="n">Put</span><span class="p">(</span><span class="s">&quot;Adobe&quot;</span><span class="p">,</span> <span class="mi">5</span><span class="p">);</span>
+<a name="line-946"></a> <span class="n">streamPriv</span><span class="p">.</span><span class="n">Put_uint8</span><span class="p">(</span><span class="mh">0x00</span><span class="p">);</span>
+<a name="line-947"></a> <span class="n">streamPriv</span><span class="p">.</span><span class="n">Put</span><span class="p">(</span><span class="s">&quot;MakN&quot;</span><span class="p">,</span> <span class="mi">4</span><span class="p">);</span>
+<a name="line-948"></a> <span class="n">streamPriv</span><span class="p">.</span><span class="n">Put_uint32</span><span class="p">(</span><span class="n">mkrnts</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">+</span> <span class="n">mknByteOrder</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">+</span> <span class="mi">4</span><span class="p">);</span>
+<a name="line-949"></a> <span class="n">streamPriv</span><span class="p">.</span><span class="n">Put</span><span class="p">(</span><span class="n">mknByteOrder</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">(),</span> <span class="n">mknByteOrder</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
+<a name="line-950"></a> <span class="n">streamPriv</span><span class="p">.</span><span class="n">Put_uint32</span><span class="p">(</span><span class="n">mknOffset</span><span class="p">);</span>
+<a name="line-951"></a> <span class="n">streamPriv</span><span class="p">.</span><span class="n">Put</span><span class="p">(</span><span class="n">mkrnts</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">mkrnts</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
+<a name="line-952"></a> <span class="n">AutoPtr</span><span class="o">&lt;</span><span class="n">dng_memory_block</span><span class="o">&gt;</span> <span class="n">blockPriv</span><span class="p">(</span><span class="n">host</span><span class="p">.</span><span class="n">Allocate</span><span class="p">(</span><span class="n">streamPriv</span><span class="p">.</span><span class="n">Length</span><span class="p">()));</span>
+<a name="line-953"></a> <span class="n">streamPriv</span><span class="p">.</span><span class="n">SetReadPosition</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-954"></a> <span class="n">streamPriv</span><span class="p">.</span><span class="n">Get</span><span class="p">(</span><span class="n">blockPriv</span><span class="o">-&gt;</span><span class="n">Buffer</span><span class="p">(),</span> <span class="n">streamPriv</span><span class="p">.</span><span class="n">Length</span><span class="p">());</span>
+<a name="line-955"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetPrivateData</span><span class="p">(</span><span class="n">blockPriv</span><span class="p">);</span>
+<a name="line-956"></a> <span class="p">}</span>
+<a name="line-957"></a> <span class="p">}</span>
<a name="line-958"></a> <span class="p">}</span>
-<a name="line-959"></a> <span class="p">}</span>
-<a name="line-960"></a>
-<a name="line-961"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-962"></a> <span class="n">emit</span> <span class="nf">signalListAlbumsDone</span><span class="p">(</span><span class="n">list</span><span class="p">);</span>
-<a name="line-963"></a><span class="p">}</span>
-<a name="line-964"></a>
-<a name="line-965"></a><span class="kt">void</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">parseResponseCreateFolder</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
-<a name="line-966"></a><span class="p">{</span>
-<a name="line-967"></a><span class="hll"> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">);</span><span class='error2'>&lt;--- Shadowed declaration</span>
-</span><a name="line-968"></a> <span class="n">QJsonObject</span> <span class="n">jsonObject</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">object</span><span class="p">();</span>
-<a name="line-969"></a> <span class="kt">bool</span> <span class="n">fail</span> <span class="o">=</span> <span class="n">jsonObject</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;error&quot;</span><span class="p">));</span>
-<a name="line-970"></a>
-<a name="line-971"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-972"></a>
-<a name="line-973"></a> <span class="k">if</span> <span class="p">(</span><span class="n">fail</span><span class="p">)</span>
-<a name="line-974"></a> <span class="p">{</span>
-<a name="line-975"></a> <span class="n">QJsonParseError</span> <span class="n">err</span><span class="p">;</span>
-<a name="line-976"></a><span class="hll"> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">err</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-977"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;parseResponseCreateFolder ERROR: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">doc</span><span class="p">;</span>
-<a name="line-978"></a> <span class="n">emit</span> <span class="nf">signalCreateFolderFailed</span><span class="p">(</span><span class="n">jsonObject</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;error_summary&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">());</span>
-<a name="line-979"></a> <span class="p">}</span>
-<a name="line-980"></a> <span class="k">else</span>
-<a name="line-981"></a> <span class="p">{</span>
-<a name="line-982"></a> <span class="n">emit</span> <span class="n">signalCreateFolderSucceeded</span><span class="p">();</span>
-<a name="line-983"></a> <span class="p">}</span>
-<a name="line-984"></a><span class="p">}</span>
+<a name="line-959"></a>
+<a name="line-960"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">backupOriginalRawFile</span><span class="p">)</span>
+<a name="line-961"></a> <span class="p">{</span>
+<a name="line-962"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Backup Original RAW file (&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">inputInfo</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; bytes)&quot;</span><span class="p">;</span>
+<a name="line-963"></a>
+<a name="line-964"></a> <span class="n">QFileInfo</span> <span class="nf">originalFileInfo</span><span class="p">(</span><span class="n">inputFile</span><span class="p">());</span>
+<a name="line-965"></a>
+<a name="line-966"></a> <span class="n">QFile</span> <span class="nf">originalFile</span><span class="p">(</span><span class="n">originalFileInfo</span><span class="p">.</span><span class="n">absoluteFilePath</span><span class="p">());</span>
+<a name="line-967"></a>
+<a name="line-968"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">originalFile</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="n">QIODevice</span><span class="o">::</span><span class="n">ReadOnly</span><span class="p">))</span>
+<a name="line-969"></a> <span class="p">{</span>
+<a name="line-970"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Cannot open original RAW file to backup in DNG. Aborted...&quot;</span><span class="p">;</span>
+<a name="line-971"></a> <span class="k">return</span> <span class="n">PROCESSFAILED</span><span class="p">;</span>
+<a name="line-972"></a> <span class="p">}</span>
+<a name="line-973"></a>
+<a name="line-974"></a> <span class="n">QDataStream</span> <span class="n">originalDataStream</span><span class="p">(</span><span class="o">&amp;</span><span class="n">originalFile</span><span class="p">);</span>
+<a name="line-975"></a>
+<a name="line-976"></a> <span class="n">quint32</span> <span class="n">forkLength</span> <span class="o">=</span> <span class="n">originalFileInfo</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+<a name="line-977"></a> <span class="n">quint32</span> <span class="n">forkBlocks</span> <span class="o">=</span> <span class="p">(</span><span class="n">quint32</span><span class="p">)</span><span class="n">floor</span><span class="p">((</span><span class="n">forkLength</span> <span class="o">+</span> <span class="mf">65535.0</span><span class="p">)</span> <span class="o">/</span> <span class="mf">65536.0</span><span class="p">);</span>
+<a name="line-978"></a>
+<a name="line-979"></a> <span class="n">QVector</span><span class="o">&lt;</span><span class="n">quint32</span><span class="o">&gt;</span> <span class="n">offsets</span><span class="p">;</span>
+<a name="line-980"></a> <span class="n">quint32</span> <span class="n">offset</span> <span class="o">=</span> <span class="p">(</span><span class="mi">2</span> <span class="o">+</span> <span class="n">forkBlocks</span><span class="p">)</span> <span class="o">*</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">quint32</span><span class="p">);</span>
+<a name="line-981"></a> <span class="n">offsets</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">offset</span><span class="p">);</span>
+<a name="line-982"></a>
+<a name="line-983"></a> <span class="n">QByteArray</span> <span class="n">originalDataBlock</span><span class="p">;</span>
+<a name="line-984"></a> <span class="n">originalDataBlock</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="n">CHUNK</span><span class="p">);</span>
<a name="line-985"></a>
-<a name="line-986"></a><span class="p">}</span> <span class="c1">// namespace DigikamGenericTwitterPlugin</span>
+<a name="line-986"></a> <span class="n">QTemporaryFile</span> <span class="n">compressedFile</span><span class="p">;</span>
+<a name="line-987"></a>
+<a name="line-988"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">compressedFile</span><span class="p">.</span><span class="n">open</span><span class="p">())</span>
+<a name="line-989"></a> <span class="p">{</span>
+<a name="line-990"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Cannot open temporary file to write Zipped Raw data. Aborted...&quot;</span><span class="p">;</span>
+<a name="line-991"></a> <span class="k">return</span> <span class="n">PROCESSFAILED</span><span class="p">;</span>
+<a name="line-992"></a> <span class="p">}</span>
+<a name="line-993"></a>
+<a name="line-994"></a> <span class="n">QDataStream</span> <span class="n">compressedDataStream</span><span class="p">(</span><span class="o">&amp;</span><span class="n">compressedFile</span><span class="p">);</span>
+<a name="line-995"></a>
+<a name="line-996"></a> <span class="k">for</span> <span class="p">(</span><span class="n">quint32</span> <span class="n">block</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">block</span> <span class="o">&lt;</span> <span class="n">forkBlocks</span> <span class="p">;</span> <span class="o">++</span><span class="n">block</span><span class="p">)</span>
+<a name="line-997"></a> <span class="p">{</span>
+<a name="line-998"></a> <span class="kt">int</span> <span class="n">originalBlockLength</span> <span class="o">=</span> <span class="n">originalDataStream</span><span class="p">.</span><span class="n">readRawData</span><span class="p">(</span><span class="n">originalDataBlock</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">CHUNK</span><span class="p">);</span>
+<a name="line-999"></a>
+<a name="line-1000"></a> <span class="n">QByteArray</span> <span class="n">compressedDataBlock</span> <span class="o">=</span> <span class="n">qCompress</span><span class="p">((</span><span class="k">const</span> <span class="n">uchar</span><span class="o">*</span><span class="p">)</span><span class="n">originalDataBlock</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">originalBlockLength</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span>
+<a name="line-1001"></a> <span class="n">compressedDataBlock</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">4</span><span class="p">);</span> <span class="c1">// removes qCompress own header</span>
+<a name="line-1002"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: compressed data block &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">originalBlockLength</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; -&gt; &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">compressedDataBlock</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+<a name="line-1003"></a>
+<a name="line-1004"></a> <span class="n">offset</span> <span class="o">+=</span> <span class="n">compressedDataBlock</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+<a name="line-1005"></a> <span class="n">offsets</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">offset</span><span class="p">);</span>
+<a name="line-1006"></a>
+<a name="line-1007"></a> <span class="n">compressedDataStream</span><span class="p">.</span><span class="n">writeRawData</span><span class="p">(</span><span class="n">compressedDataBlock</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">compressedDataBlock</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
+<a name="line-1008"></a> <span class="p">}</span>
+<a name="line-1009"></a>
+<a name="line-1010"></a><span class="hll"> <span class="n">dng_memory_allocator</span> <span class="n">memalloc</span><span class="p">(</span><span class="n">gDefaultDNGMemoryAllocator</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-1011"></a> <span class="n">dng_memory_stream</span> <span class="nf">tempDataStream</span><span class="p">(</span><span class="n">memalloc</span><span class="p">);</span>
+<a name="line-1012"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">SetBigEndian</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-1013"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Put_uint32</span><span class="p">(</span><span class="n">forkLength</span><span class="p">);</span>
+<a name="line-1014"></a>
+<a name="line-1015"></a> <span class="k">for</span> <span class="p">(</span><span class="n">qint32</span> <span class="n">idx</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">idx</span> <span class="o">&lt;</span> <span class="n">offsets</span><span class="p">.</span><span class="n">size</span><span class="p">();</span> <span class="o">++</span><span class="n">idx</span><span class="p">)</span>
+<a name="line-1016"></a> <span class="p">{</span>
+<a name="line-1017"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Put_uint32</span><span class="p">(</span><span class="n">offsets</span><span class="p">[</span><span class="n">idx</span><span class="p">]);</span>
+<a name="line-1018"></a> <span class="p">}</span>
+<a name="line-1019"></a>
+<a name="line-1020"></a> <span class="n">QByteArray</span> <span class="n">compressedData</span><span class="p">;</span>
+<a name="line-1021"></a> <span class="n">compressedData</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="n">compressedFile</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
+<a name="line-1022"></a> <span class="n">compressedFile</span><span class="p">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-1023"></a> <span class="n">compressedDataStream</span><span class="p">.</span><span class="n">readRawData</span><span class="p">(</span><span class="n">compressedData</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">compressedData</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
+<a name="line-1024"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Put</span><span class="p">(</span><span class="n">compressedData</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">compressedData</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
+<a name="line-1025"></a>
+<a name="line-1026"></a> <span class="n">compressedFile</span><span class="p">.</span><span class="n">remove</span><span class="p">();</span>
+<a name="line-1027"></a> <span class="n">originalFile</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
+<a name="line-1028"></a>
+<a name="line-1029"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Put_uint32</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-1030"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Put_uint32</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-1031"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Put_uint32</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-1032"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Put_uint32</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-1033"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Put_uint32</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-1034"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Put_uint32</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-1035"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Put_uint32</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-1036"></a>
+<a name="line-1037"></a> <span class="n">AutoPtr</span><span class="o">&lt;</span><span class="n">dng_memory_block</span><span class="o">&gt;</span> <span class="n">block</span><span class="p">(</span><span class="n">host</span><span class="p">.</span><span class="n">Allocate</span><span class="p">(</span><span class="n">tempDataStream</span><span class="p">.</span><span class="n">Length</span><span class="p">()));</span>
+<a name="line-1038"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">SetReadPosition</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-1039"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Get</span><span class="p">(</span><span class="n">block</span><span class="o">-&gt;</span><span class="n">Buffer</span><span class="p">(),</span> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Length</span><span class="p">());</span>
+<a name="line-1040"></a>
+<a name="line-1041"></a> <span class="n">dng_md5_printer</span> <span class="n">md5</span><span class="p">;</span>
+<a name="line-1042"></a> <span class="n">md5</span><span class="p">.</span><span class="n">Process</span><span class="p">(</span><span class="n">block</span><span class="o">-&gt;</span><span class="n">Buffer</span><span class="p">(),</span> <span class="n">block</span><span class="o">-&gt;</span><span class="n">LogicalSize</span><span class="p">());</span>
+<a name="line-1043"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetOriginalRawFileData</span><span class="p">(</span><span class="n">block</span><span class="p">);</span>
+<a name="line-1044"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetOriginalRawFileDigest</span><span class="p">(</span><span class="n">md5</span><span class="p">.</span><span class="n">Result</span><span class="p">());</span>
+<a name="line-1045"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">ValidateOriginalRawFileDigest</span><span class="p">();</span>
+<a name="line-1046"></a> <span class="p">}</span>
+<a name="line-1047"></a>
+<a name="line-1048"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">)</span>
+<a name="line-1049"></a> <span class="p">{</span>
+<a name="line-1050"></a> <span class="k">return</span> <span class="n">PROCESSCANCELED</span><span class="p">;</span>
+<a name="line-1051"></a> <span class="p">}</span>
+<a name="line-1052"></a>
+<a name="line-1053"></a> <span class="c1">// -----------------------------------------------------------------------------------------</span>
+<a name="line-1054"></a>
+<a name="line-1055"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Build DNG Negative&quot;</span> <span class="p">;</span>
+<a name="line-1056"></a>
+<a name="line-1057"></a> <span class="c1">// Assign Raw image data.</span>
+<a name="line-1058"></a>
+<a name="line-1059"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetStage1Image</span><span class="p">(</span><span class="n">image</span><span class="p">);</span>
+<a name="line-1060"></a>
+<a name="line-1061"></a> <span class="c1">// Compute linearized and range mapped image</span>
+<a name="line-1062"></a>
+<a name="line-1063"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">BuildStage2Image</span><span class="p">(</span><span class="n">host</span><span class="p">);</span>
+<a name="line-1064"></a>
+<a name="line-1065"></a> <span class="c1">// Compute demosaiced image (used by preview and thumbnail)</span>
+<a name="line-1066"></a>
+<a name="line-1067"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">BuildStage3Image</span><span class="p">(</span><span class="n">host</span><span class="p">);</span>
+<a name="line-1068"></a>
+<a name="line-1069"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SynchronizeMetadata</span><span class="p">();</span>
+<a name="line-1070"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">RebuildIPTC</span><span class="p">(</span><span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
+<a name="line-1071"></a>
+<a name="line-1072"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">)</span>
+<a name="line-1073"></a> <span class="p">{</span>
+<a name="line-1074"></a> <span class="k">return</span> <span class="n">PROCESSCANCELED</span><span class="p">;</span>
+<a name="line-1075"></a> <span class="p">}</span>
+<a name="line-1076"></a>
+<a name="line-1077"></a> <span class="c1">// -----------------------------------------------------------------------------------------</span>
+<a name="line-1078"></a>
+<a name="line-1079"></a> <span class="n">dng_preview_list</span> <span class="n">previewList</span><span class="p">;</span>
+<a name="line-1080"></a>
+<a name="line-1081"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">previewMode</span> <span class="o">!=</span> <span class="n">DNGWriter</span><span class="o">::</span><span class="n">NONE</span><span class="p">)</span>
+<a name="line-1082"></a> <span class="p">{</span>
+<a name="line-1083"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: DNG preview image creation&quot;</span> <span class="p">;</span>
+<a name="line-1084"></a>
+<a name="line-1085"></a> <span class="c1">// Construct a preview image as TIFF format.</span>
+<a name="line-1086"></a>
+<a name="line-1087"></a> <span class="n">AutoPtr</span><span class="o">&lt;</span><span class="n">dng_image</span><span class="o">&gt;</span> <span class="n">tiffImage</span><span class="p">;</span>
+<a name="line-1088"></a> <span class="n">dng_render</span> <span class="nf">tiff_render</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="o">*</span><span class="n">negative</span><span class="p">);</span>
+<a name="line-1089"></a> <span class="n">tiff_render</span><span class="p">.</span><span class="n">SetFinalSpace</span><span class="p">(</span><span class="n">dng_space_sRGB</span><span class="o">::</span><span class="n">Get</span><span class="p">());</span>
+<a name="line-1090"></a> <span class="n">tiff_render</span><span class="p">.</span><span class="n">SetFinalPixelType</span><span class="p">(</span><span class="n">ttByte</span><span class="p">);</span>
+<a name="line-1091"></a> <span class="n">tiff_render</span><span class="p">.</span><span class="n">SetMaximumSize</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">previewMode</span> <span class="o">==</span> <span class="n">MEDIUM</span> <span class="o">?</span> <span class="mi">1280</span> <span class="o">:</span> <span class="n">width</span><span class="p">);</span>
+<a name="line-1092"></a> <span class="n">tiffImage</span><span class="p">.</span><span class="n">Reset</span><span class="p">(</span><span class="n">tiff_render</span><span class="p">.</span><span class="n">Render</span><span class="p">());</span>
+<a name="line-1093"></a>
+<a name="line-1094"></a> <span class="n">dng_image_writer</span> <span class="n">tiff_writer</span><span class="p">;</span>
+<a name="line-1095"></a> <span class="n">AutoPtr</span><span class="o">&lt;</span><span class="n">dng_memory_stream</span><span class="o">&gt;</span> <span class="n">dms</span><span class="p">(</span><span class="k">new</span> <span class="n">dng_memory_stream</span><span class="p">(</span><span class="n">gDefaultDNGMemoryAllocator</span><span class="p">));</span>
+<a name="line-1096"></a>
+<a name="line-1097"></a> <span class="n">tiff_writer</span><span class="p">.</span><span class="n">WriteTIFF</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="o">*</span><span class="n">dms</span><span class="p">,</span> <span class="o">*</span><span class="n">tiffImage</span><span class="p">.</span><span class="n">Get</span><span class="p">(),</span> <span class="n">piRGB</span><span class="p">,</span>
+<a name="line-1098"></a> <span class="n">ccUncompressed</span><span class="p">,</span> <span class="n">negative</span><span class="p">.</span><span class="n">Get</span><span class="p">(),</span> <span class="o">&amp;</span><span class="n">tiff_render</span><span class="p">.</span><span class="n">FinalSpace</span><span class="p">());</span>
+<a name="line-1099"></a>
+<a name="line-1100"></a> <span class="c1">// Write TIFF preview image data to a temp JPEG file</span>
+<a name="line-1101"></a>
+<a name="line-1102"></a> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="kt">char</span><span class="o">&gt;</span> <span class="n">tiff_mem_buffer</span><span class="p">(</span><span class="n">dms</span><span class="o">-&gt;</span><span class="n">Length</span><span class="p">());</span>
+<a name="line-1103"></a> <span class="n">dms</span><span class="o">-&gt;</span><span class="n">SetReadPosition</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-1104"></a> <span class="n">dms</span><span class="o">-&gt;</span><span class="n">Get</span><span class="p">(</span><span class="o">&amp;</span><span class="n">tiff_mem_buffer</span><span class="p">.</span><span class="n">front</span><span class="p">(),</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">tiff_mem_buffer</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
+<a name="line-1105"></a> <span class="n">dms</span><span class="p">.</span><span class="n">Reset</span><span class="p">();</span>
+<a name="line-1106"></a>
+<a name="line-1107"></a> <span class="n">QImage</span> <span class="n">pre_image</span><span class="p">;</span>
+<a name="line-1108"></a>
+<a name="line-1109"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">pre_image</span><span class="p">.</span><span class="n">loadFromData</span><span class="p">((</span><span class="n">uchar</span><span class="o">*</span><span class="p">)</span><span class="o">&amp;</span><span class="n">tiff_mem_buffer</span><span class="p">.</span><span class="n">front</span><span class="p">(),</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">tiff_mem_buffer</span><span class="p">.</span><span class="n">size</span><span class="p">(),</span> <span class="s">&quot;TIFF&quot;</span><span class="p">))</span>
+<a name="line-1110"></a> <span class="p">{</span>
+<a name="line-1111"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Cannot load TIFF preview data in memory. Aborted...&quot;</span> <span class="p">;</span>
+<a name="line-1112"></a> <span class="k">return</span> <span class="n">PROCESSFAILED</span><span class="p">;</span>
+<a name="line-1113"></a> <span class="p">}</span>
+<a name="line-1114"></a>
+<a name="line-1115"></a> <span class="n">QTemporaryFile</span> <span class="n">previewFile</span><span class="p">;</span>
+<a name="line-1116"></a>
+<a name="line-1117"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">previewFile</span><span class="p">.</span><span class="n">open</span><span class="p">())</span>
+<a name="line-1118"></a> <span class="p">{</span>
+<a name="line-1119"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Cannot open temporary file to write JPEG preview. Aborted...&quot;</span> <span class="p">;</span>
+<a name="line-1120"></a> <span class="k">return</span> <span class="n">PROCESSFAILED</span><span class="p">;</span>
+<a name="line-1121"></a> <span class="p">}</span>
+<a name="line-1122"></a>
+<a name="line-1123"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">pre_image</span><span class="p">.</span><span class="n">save</span><span class="p">(</span><span class="n">previewFile</span><span class="p">.</span><span class="n">fileName</span><span class="p">(),</span> <span class="s">&quot;JPEG&quot;</span><span class="p">,</span> <span class="mi">90</span><span class="p">))</span>
+<a name="line-1124"></a> <span class="p">{</span>
+<a name="line-1125"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Cannot save file to write JPEG preview. Aborted...&quot;</span> <span class="p">;</span>
+<a name="line-1126"></a> <span class="k">return</span> <span class="n">PROCESSFAILED</span><span class="p">;</span>
+<a name="line-1127"></a> <span class="p">}</span>
+<a name="line-1128"></a>
+<a name="line-1129"></a> <span class="c1">// Load JPEG preview file data in DNG preview container.</span>
+<a name="line-1130"></a>
+<a name="line-1131"></a> <span class="n">AutoPtr</span><span class="o">&lt;</span><span class="n">dng_jpeg_preview</span><span class="o">&gt;</span> <span class="n">jpeg_preview</span><span class="p">;</span>
+<a name="line-1132"></a> <span class="n">jpeg_preview</span><span class="p">.</span><span class="n">Reset</span><span class="p">(</span><span class="k">new</span> <span class="n">dng_jpeg_preview</span><span class="p">);</span>
+<a name="line-1133"></a> <span class="n">jpeg_preview</span><span class="o">-&gt;</span><span class="n">fPhotometricInterpretation</span> <span class="o">=</span> <span class="n">piYCbCr</span><span class="p">;</span>
+<a name="line-1134"></a> <span class="n">jpeg_preview</span><span class="o">-&gt;</span><span class="n">fPreviewSize</span><span class="p">.</span><span class="n">v</span> <span class="o">=</span> <span class="n">pre_image</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
+<a name="line-1135"></a> <span class="n">jpeg_preview</span><span class="o">-&gt;</span><span class="n">fPreviewSize</span><span class="p">.</span><span class="n">h</span> <span class="o">=</span> <span class="n">pre_image</span><span class="p">.</span><span class="n">width</span><span class="p">();</span>
+<a name="line-1136"></a> <span class="n">jpeg_preview</span><span class="o">-&gt;</span><span class="n">fCompressedData</span><span class="p">.</span><span class="n">Reset</span><span class="p">(</span><span class="n">host</span><span class="p">.</span><span class="n">Allocate</span><span class="p">(</span><span class="n">previewFile</span><span class="p">.</span><span class="n">size</span><span class="p">()));</span>
+<a name="line-1137"></a>
+<a name="line-1138"></a> <span class="n">QDataStream</span> <span class="nf">previewStream</span><span class="p">(</span> <span class="o">&amp;</span><span class="n">previewFile</span> <span class="p">);</span>
+<a name="line-1139"></a> <span class="n">previewStream</span><span class="p">.</span><span class="n">readRawData</span><span class="p">(</span><span class="n">jpeg_preview</span><span class="o">-&gt;</span><span class="n">fCompressedData</span><span class="o">-&gt;</span><span class="n">Buffer_char</span><span class="p">(),</span> <span class="n">previewFile</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
+<a name="line-1140"></a>
+<a name="line-1141"></a> <span class="n">AutoPtr</span><span class="o">&lt;</span><span class="n">dng_preview</span><span class="o">&gt;</span> <span class="n">pp</span><span class="p">(</span> <span class="k">dynamic_cast</span><span class="o">&lt;</span><span class="n">dng_preview</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">jpeg_preview</span><span class="p">.</span><span class="n">Release</span><span class="p">())</span> <span class="p">);</span>
+<a name="line-1142"></a> <span class="n">previewList</span><span class="p">.</span><span class="n">Append</span><span class="p">(</span><span class="n">pp</span><span class="p">);</span>
+<a name="line-1143"></a>
+<a name="line-1144"></a> <span class="n">previewFile</span><span class="p">.</span><span class="n">remove</span><span class="p">();</span>
+<a name="line-1145"></a> <span class="p">}</span>
+<a name="line-1146"></a>
+<a name="line-1147"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">)</span>
+<a name="line-1148"></a> <span class="p">{</span>
+<a name="line-1149"></a> <span class="k">return</span> <span class="n">PROCESSCANCELED</span><span class="p">;</span>
+<a name="line-1150"></a> <span class="p">}</span>
+<a name="line-1151"></a>
+<a name="line-1152"></a> <span class="c1">// -----------------------------------------------------------------------------------------</span>
+<a name="line-1153"></a>
+<a name="line-1154"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: DNG thumbnail creation&quot;</span> <span class="p">;</span>
+<a name="line-1155"></a>
+<a name="line-1156"></a> <span class="n">dng_image_preview</span> <span class="n">thumbnail</span><span class="p">;</span>
+<a name="line-1157"></a> <span class="n">dng_render</span> <span class="nf">thumbnail_render</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="o">*</span><span class="n">negative</span><span class="p">);</span>
+<a name="line-1158"></a> <span class="n">thumbnail_render</span><span class="p">.</span><span class="n">SetFinalSpace</span><span class="p">(</span><span class="n">dng_space_sRGB</span><span class="o">::</span><span class="n">Get</span><span class="p">());</span>
+<a name="line-1159"></a> <span class="n">thumbnail_render</span><span class="p">.</span><span class="n">SetFinalPixelType</span><span class="p">(</span><span class="n">ttByte</span><span class="p">);</span>
+<a name="line-1160"></a> <span class="n">thumbnail_render</span><span class="p">.</span><span class="n">SetMaximumSize</span><span class="p">(</span><span class="mi">256</span><span class="p">);</span>
+<a name="line-1161"></a> <span class="n">thumbnail</span><span class="p">.</span><span class="n">fImage</span><span class="p">.</span><span class="n">Reset</span><span class="p">(</span><span class="n">thumbnail_render</span><span class="p">.</span><span class="n">Render</span><span class="p">());</span>
+<a name="line-1162"></a>
+<a name="line-1163"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">)</span>
+<a name="line-1164"></a> <span class="p">{</span>
+<a name="line-1165"></a> <span class="k">return</span> <span class="n">PROCESSCANCELED</span><span class="p">;</span>
+<a name="line-1166"></a> <span class="p">}</span>
+<a name="line-1167"></a>
+<a name="line-1168"></a> <span class="c1">// -----------------------------------------------------------------------------------------</span>
+<a name="line-1169"></a>
+<a name="line-1170"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Creating DNG file &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">outputInfo</span><span class="p">.</span><span class="n">fileName</span><span class="p">()</span> <span class="p">;</span>
+<a name="line-1171"></a>
+<a name="line-1172"></a> <span class="n">dng_image_writer</span> <span class="n">writer</span><span class="p">;</span>
+<a name="line-1173"></a> <span class="n">dng_file_stream</span> <span class="nf">filestream</span><span class="p">(</span><span class="n">QFile</span><span class="o">::</span><span class="n">encodeName</span><span class="p">(</span><span class="n">dngFilePath</span><span class="p">).</span><span class="n">constData</span><span class="p">(),</span> <span class="nb">true</span><span class="p">);</span>
+<a name="line-1174"></a>
+<a name="line-1175"></a> <span class="n">writer</span><span class="p">.</span><span class="n">WriteDNG</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="n">filestream</span><span class="p">,</span> <span class="o">*</span><span class="n">negative</span><span class="p">.</span><span class="n">Get</span><span class="p">(),</span> <span class="n">thumbnail</span><span class="p">,</span>
+<a name="line-1176"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">jpegLossLessCompression</span> <span class="o">?</span> <span class="nl">ccJPEG</span> <span class="p">:</span> <span class="n">ccUncompressed</span><span class="p">,</span>
+<a name="line-1177"></a> <span class="o">&amp;</span><span class="n">previewList</span><span class="p">);</span>
+<a name="line-1178"></a>
+<a name="line-1179"></a> <span class="c1">// -----------------------------------------------------------------------------------------</span>
+<a name="line-1180"></a> <span class="c1">// Metadata makernote cleanup using Exiv2 for some RAW file types</span>
+<a name="line-1181"></a> <span class="c1">// See bug #204437 and #210371, and write XMP Sidecar if necessary</span>
+<a name="line-1182"></a> <span class="c1">// We disable writing to RAW files, see bug #381432</span>
+<a name="line-1183"></a><span class="cm">/*</span>
+<a name="line-1184"></a><span class="cm"> if (meta.load(dngFilePath))</span>
+<a name="line-1185"></a><span class="cm"> {</span>
+<a name="line-1186"></a><span class="cm"> if (inputInfo.suffix().toUpper() == QLatin1String(&quot;ORF&quot;))</span>
+<a name="line-1187"></a><span class="cm"> {</span>
+<a name="line-1188"></a><span class="cm"> qCDebug(DIGIKAM_GENERAL_LOG) &lt;&lt; &quot;DNGWriter: cleanup makernotes using Exiv2&quot; ;</span>
+<a name="line-1189"></a>
+<a name="line-1190"></a><span class="cm"> meta.setWriteRawFiles(true);</span>
+<a name="line-1191"></a><span class="cm"> meta.removeExifTag(&quot;Exif.OlympusIp.BlackLevel&quot;, false);</span>
+<a name="line-1192"></a><span class="cm"> }</span>
+<a name="line-1193"></a><span class="cm"> else</span>
+<a name="line-1194"></a><span class="cm"> {</span>
+<a name="line-1195"></a><span class="cm"> // Don&#39;t touch DNG file and create XMP sidecar depending of host application settings.</span>
+<a name="line-1196"></a><span class="cm"> meta.setWriteRawFiles(false);</span>
+<a name="line-1197"></a><span class="cm"> }</span>
+<a name="line-1198"></a>
+<a name="line-1199"></a><span class="cm"> meta.applyChanges();</span>
+<a name="line-1200"></a><span class="cm"> }</span>
+<a name="line-1201"></a><span class="cm">*/</span>
+<a name="line-1202"></a> <span class="c1">// -----------------------------------------------------------------------------------------</span>
+<a name="line-1203"></a> <span class="c1">// update modification time if desired</span>
+<a name="line-1204"></a>
+<a name="line-1205"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">updateFileDate</span><span class="p">)</span>
+<a name="line-1206"></a> <span class="p">{</span>
+<a name="line-1207"></a> <span class="n">QDateTime</span> <span class="n">date</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getItemDateTime</span><span class="p">();</span>
+<a name="line-1208"></a>
+<a name="line-1209"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Setting modification date from meta data: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">date</span><span class="p">.</span><span class="n">toString</span><span class="p">();</span>
+<a name="line-1210"></a>
+<a name="line-1211"></a> <span class="c1">// don&#39;t touch access time</span>
+<a name="line-1212"></a>
+<a name="line-1213"></a> <span class="n">QT_STATBUF</span> <span class="n">st</span><span class="p">;</span>
+<a name="line-1214"></a>
+<a name="line-1215"></a> <span class="k">if</span> <span class="p">(</span><span class="n">QT_STAT</span><span class="p">(</span><span class="n">QFile</span><span class="o">::</span><span class="n">encodeName</span><span class="p">(</span><span class="n">dngFilePath</span><span class="p">).</span><span class="n">constData</span><span class="p">(),</span> <span class="o">&amp;</span><span class="n">st</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-1216"></a> <span class="p">{</span>
+<a name="line-1217"></a> <span class="k">struct</span> <span class="n">utimbuf</span> <span class="n">ut</span><span class="p">;</span>
+<a name="line-1218"></a> <span class="n">ut</span><span class="p">.</span><span class="n">actime</span> <span class="o">=</span> <span class="n">st</span><span class="p">.</span><span class="n">st_atime</span><span class="p">;</span>
+<a name="line-1219"></a> <span class="n">ut</span><span class="p">.</span><span class="n">modtime</span> <span class="o">=</span> <span class="n">date</span><span class="p">.</span><span class="n">toTime_t</span><span class="p">();</span>
+<a name="line-1220"></a> <span class="n">utime</span><span class="p">(</span><span class="n">QFile</span><span class="o">::</span><span class="n">encodeName</span><span class="p">(</span><span class="n">dngFilePath</span><span class="p">).</span><span class="n">constData</span><span class="p">(),</span> <span class="o">&amp;</span><span class="n">ut</span><span class="p">);</span>
+<a name="line-1221"></a> <span class="p">}</span>
+<a name="line-1222"></a> <span class="p">}</span>
+<a name="line-1223"></a> <span class="p">}</span>
+<a name="line-1224"></a>
+<a name="line-1225"></a> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">dng_exception</span><span class="o">&amp;</span> <span class="n">exception</span><span class="p">)</span>
+<a name="line-1226"></a> <span class="p">{</span>
+<a name="line-1227"></a> <span class="kt">int</span> <span class="n">ret</span> <span class="o">=</span> <span class="n">exception</span><span class="p">.</span><span class="n">ErrorCode</span><span class="p">();</span>
+<a name="line-1228"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: DNG SDK exception code (&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">ret</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;)&quot;</span> <span class="p">;</span>
+<a name="line-1229"></a> <span class="k">return</span> <span class="n">DNGSDKINTERNALERROR</span><span class="p">;</span>
+<a name="line-1230"></a> <span class="p">}</span>
+<a name="line-1231"></a>
+<a name="line-1232"></a> <span class="k">catch</span> <span class="p">(...)</span>
+<a name="line-1233"></a> <span class="p">{</span>
+<a name="line-1234"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: DNG SDK exception code unknow&quot;</span> <span class="p">;</span>
+<a name="line-1235"></a> <span class="k">return</span> <span class="n">DNGSDKINTERNALERROR</span><span class="p">;</span>
+<a name="line-1236"></a> <span class="p">}</span>
+<a name="line-1237"></a>
+<a name="line-1238"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: DNG conversion complete...&quot;</span> <span class="p">;</span>
+<a name="line-1239"></a>
+<a name="line-1240"></a> <span class="k">return</span> <span class="n">PROCESSCOMPLETE</span><span class="p">;</span>
+<a name="line-1241"></a><span class="p">}</span>
+<a name="line-1242"></a>
+<a name="line-1243"></a><span class="p">}</span> <span class="c1">// namespace Digikam</span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/14.html b/static/reports/cppcheck/master/14.html
index 4dbb74777..8a10418d8 100644
--- a/static/reports/cppcheck/master/14.html
+++ b/static/reports/cppcheck/master/14.html
@@ -1,2501 +1,1815 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/dplugins/generic/webservices/yandexfotki/yftalker.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/tests/albummodel/albummodeltest.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> yftalker.cpp</p>
-<a href='14.html#line-826'> shadowVar 826</a><a href='14.html#line-857'> shadowVar 857</a>
+ <p id="filename"><a href="index.html">Defects:</a> albummodeltest.cpp</p>
+<a href='14.html#line-209'> shadowVar 209</a><a href='14.html#line-209'> shadowVar 209</a><a href='14.html#line-209'> shadowVar 209</a><a href='14.html#line-209'> shadowVar 209</a><a href='14.html#line-209'> shadowVar 209</a><a href='14.html#line-209'> shadowVar 209</a><a href='14.html#line-209'> shadowVar 209</a><a href='14.html#line-209'> shadowVar 209</a><a href='14.html#line-209'> shadowVar 209</a><a href='14.html#line-209'> shadowVar 209</a><a href='14.html#line-221'> shadowVar 221</a><a href='14.html#line-222'> shadowVar 222</a><a href='14.html#line-224'> shadowVar 224</a><a href='14.html#line-226'> shadowVar 226</a><a href='14.html#line-240'> shadowVar 240</a><a href='14.html#line-241'> shadowVar 241</a><a href='14.html#line-243'> shadowVar 243</a><a href='14.html#line-244'> shadowVar 244</a><a href='14.html#line-246'> shadowVar 246</a><a href='14.html#line-248'> shadowVar 248</a>
</div>
<div id="content">
-<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867
- 868
- 869
- 870
- 871
- 872
- 873
- 874
- 875
- 876
- 877
- 878
- 879
- 880
- 881
- 882
- 883
- 884
- 885
- 886
- 887
- 888
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- 896
- 897
- 898
- 899
- 900
- 901
- 902
- 903
- 904
- 905
- 906
- 907
- 908
- 909
- 910
- 911
- 912
- 913
- 914
- 915
- 916
- 917
- 918
- 919
- 920
- 921
- 922
- 923
- 924
- 925
- 926
- 927
- 928
- 929
- 930
- 931
- 932
- 933
- 934
- 935
- 936
- 937
- 938
- 939
- 940
- 941
- 942
- 943
- 944
- 945
- 946
- 947
- 948
- 949
- 950
- 951
- 952
- 953
- 954
- 955
- 956
- 957
- 958
- 959
- 960
- 961
- 962
- 963
- 964
- 965
- 966
- 967
- 968
- 969
- 970
- 971
- 972
- 973
- 974
- 975
- 976
- 977
- 978
- 979
- 980
- 981
- 982
- 983
- 984
- 985
- 986
- 987
- 988
- 989
- 990
- 991
- 992
- 993
- 994
- 995
- 996
- 997
- 998
- 999
-1000
-1001
-1002
-1003
-1004
-1005
-1006
-1007
-1008
-1009
-1010
-1011
-1012
-1013
-1014
-1015
-1016
-1017
-1018
-1019
-1020
-1021
-1022
-1023
-1024
-1025
-1026
-1027
-1028
-1029
-1030
-1031
-1032
-1033
-1034
-1035
-1036
-1037
-1038
-1039
-1040
-1041
-1042
-1043
-1044
-1045
-1046
-1047
-1048
-1049
-1050
-1051
-1052
-1053
-1054
-1055
-1056
-1057
-1058
-1059
-1060
-1061
-1062
-1063
-1064
-1065
-1066
-1067
-1068
-1069
-1070
-1071
-1072
-1073
-1074
-1075
-1076
-1077
-1078
-1079
-1080
-1081
-1082
-1083
-1084
-1085
-1086
-1087
-1088
-1089
-1090
-1091
-1092
-1093
-1094
-1095
-1096
-1097
-1098
-1099
-1100
-1101
-1102
-1103
-1104
-1105
-1106
-1107
-1108
-1109
-1110
-1111
-1112
-1113
-1114
-1115
-1116
-1117
-1118
-1119
-1120
-1121
-1122
-1123
-1124
-1125
-1126
-1127
-1128
-1129
-1130
-1131
-1132
-1133
-1134
-1135
-1136
-1137
-1138
-1139
-1140
-1141
-1142
-1143
-1144
-1145
-1146
-1147
-1148
-1149
-1150
-1151
-1152
-1153
-1154
-1155
-1156
-1157
-1158
-1159
-1160
-1161
-1162
-1163
-1164
-1165
-1166
-1167
-1168
-1169
-1170
-1171
-1172
-1173
-1174
-1175
-1176
-1177
-1178</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
+<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+519
+520
+521
+522
+523
+524
+525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+539
+540
+541
+542
+543
+544
+545
+546
+547
+548
+549
+550
+551
+552
+553
+554
+555
+556
+557
+558
+559
+560
+561
+562
+563
+564
+565
+566
+567
+568
+569
+570
+571
+572
+573
+574
+575
+576
+577
+578
+579
+580
+581
+582
+583
+584
+585
+586
+587
+588
+589
+590
+591
+592
+593
+594
+595
+596
+597
+598
+599
+600
+601
+602
+603
+604
+605
+606
+607
+608
+609
+610
+611
+612
+613
+614
+615
+616
+617
+618
+619
+620
+621
+622
+623
+624
+625
+626
+627
+628
+629
+630
+631
+632
+633
+634
+635
+636
+637
+638
+639
+640
+641
+642
+643
+644
+645
+646
+647
+648
+649
+650
+651
+652
+653
+654
+655
+656
+657
+658
+659
+660
+661
+662
+663
+664
+665
+666
+667
+668
+669
+670
+671
+672
+673
+674
+675
+676
+677
+678
+679
+680
+681
+682
+683
+684
+685
+686
+687
+688
+689
+690
+691
+692
+693
+694
+695
+696
+697
+698
+699
+700
+701
+702
+703
+704
+705
+706
+707
+708
+709
+710
+711
+712
+713
+714
+715
+716
+717
+718
+719
+720
+721
+722
+723
+724
+725
+726
+727
+728
+729
+730
+731
+732
+733
+734
+735
+736
+737
+738
+739
+740
+741
+742
+743
+744
+745
+746
+747
+748
+749
+750
+751
+752
+753
+754
+755
+756
+757
+758
+759
+760
+761
+762
+763
+764
+765
+766
+767
+768
+769
+770
+771
+772
+773
+774
+775
+776
+777
+778
+779
+780
+781
+782
+783
+784
+785
+786
+787
+788
+789
+790
+791
+792
+793
+794
+795
+796
+797
+798
+799
+800
+801
+802
+803
+804
+805
+806
+807
+808
+809
+810
+811
+812
+813
+814
+815
+816
+817
+818
+819
+820
+821
+822
+823
+824
+825
+826
+827
+828
+829
+830
+831
+832
+833
+834
+835</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
-<a name="line-6"></a><span class="cm"> * Date : 2010-11-14</span>
-<a name="line-7"></a><span class="cm"> * Description : a tool to export items to YandexFotki web service</span>
+<a name="line-6"></a><span class="cm"> * Date : 2009-12-11</span>
+<a name="line-7"></a><span class="cm"> * Description : test cases for the various album models</span>
<a name="line-8"></a><span class="cm"> *</span>
-<a name="line-9"></a><span class="cm"> * Copyright (C) 2010 by Roman Tsisyk &lt;roman at tsisyk dot com&gt;</span>
-<a name="line-10"></a><span class="cm"> * Copyright (C) 2010-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&gt;</span>
-<a name="line-11"></a><span class="cm"> *</span>
-<a name="line-12"></a><span class="cm"> * This program is free software; you can redistribute it</span>
-<a name="line-13"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
-<a name="line-14"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
-<a name="line-15"></a><span class="cm"> * either version 2, or (at your option) any later version.</span>
+<a name="line-9"></a><span class="cm"> * Copyright (C) 2009 by Johannes Wienke &lt;languitar at semipol dot de&gt;</span>
+<a name="line-10"></a><span class="cm"> *</span>
+<a name="line-11"></a><span class="cm"> * This program is free software; you can redistribute it</span>
+<a name="line-12"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
+<a name="line-13"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
+<a name="line-14"></a><span class="cm"> * either version 2, or (at your option)</span>
+<a name="line-15"></a><span class="cm"> * any later version.</span>
<a name="line-16"></a><span class="cm"> *</span>
<a name="line-17"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
<a name="line-18"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
-<a name="line-19"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
+<a name="line-19"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
<a name="line-20"></a><span class="cm"> * GNU General Public License for more details.</span>
<a name="line-21"></a><span class="cm"> *</span>
<a name="line-22"></a><span class="cm"> * ============================================================ */</span>
<a name="line-23"></a>
-<a name="line-24"></a><span class="cp">#include</span> <span class="cpf">&quot;yftalker.h&quot;</span><span class="cp"></span>
+<a name="line-24"></a><span class="cp">#include</span> <span class="cpf">&quot;albummodeltest.h&quot;</span><span class="cp"></span>
<a name="line-25"></a>
<a name="line-26"></a><span class="c1">// Qt includes</span>
<a name="line-27"></a>
-<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;QTextDocument&gt;</span><span class="cp"></span>
-<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QByteArray&gt;</span><span class="cp"></span>
-<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QDomDocument&gt;</span><span class="cp"></span>
-<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QDomNode&gt;</span><span class="cp"></span>
-<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QFile&gt;</span><span class="cp"></span>
-<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QFileInfo&gt;</span><span class="cp"></span>
-<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QPointer&gt;</span><span class="cp"></span>
-<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QNetworkReply&gt;</span><span class="cp"></span>
-<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QNetworkAccessManager&gt;</span><span class="cp"></span>
-<a name="line-37"></a>
-<a name="line-38"></a><span class="c1">// Local includes</span>
-<a name="line-39"></a>
-<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
-<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_version.h&quot;</span><span class="cp"></span>
-<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&quot;yfauth.h&quot;</span><span class="cp"></span>
-<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&quot;yfalbum.h&quot;</span><span class="cp"></span>
-<a name="line-44"></a>
-<a name="line-45"></a><span class="k">namespace</span> <span class="n">DigikamGenericYFPlugin</span>
-<a name="line-46"></a><span class="p">{</span>
-<a name="line-47"></a>
-<a name="line-48"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">Private</span>
-<a name="line-49"></a><span class="p">{</span>
-<a name="line-50"></a><span class="k">public</span><span class="o">:</span>
-<a name="line-51"></a>
-<a name="line-52"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
-<a name="line-53"></a> <span class="p">{</span>
-<a name="line-54"></a> <span class="n">state</span> <span class="o">=</span> <span class="n">STATE_UNAUTHENTICATED</span><span class="p">;</span>
-<a name="line-55"></a> <span class="n">lastPhoto</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-56"></a> <span class="n">netMngr</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-57"></a> <span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-58"></a> <span class="p">}</span>
-<a name="line-59"></a>
-<a name="line-60"></a> <span class="c1">// API-related fields</span>
-<a name="line-61"></a> <span class="n">QString</span> <span class="n">sessionKey</span><span class="p">;</span>
-<a name="line-62"></a> <span class="n">QString</span> <span class="n">sessionId</span><span class="p">;</span>
-<a name="line-63"></a> <span class="n">QString</span> <span class="n">token</span><span class="p">;</span>
-<a name="line-64"></a> <span class="n">QString</span> <span class="n">login</span><span class="p">;</span>
-<a name="line-65"></a> <span class="n">QString</span> <span class="n">password</span><span class="p">;</span>
-<a name="line-66"></a> <span class="n">QString</span> <span class="n">apiAlbumsUrl</span><span class="p">;</span>
-<a name="line-67"></a> <span class="n">QString</span> <span class="n">apiPhotosUrl</span><span class="p">;</span>
-<a name="line-68"></a> <span class="n">QString</span> <span class="n">apiTagsUrl</span><span class="p">;</span>
-<a name="line-69"></a>
-<a name="line-70"></a> <span class="c1">// FSM data</span>
-<a name="line-71"></a> <span class="n">State</span> <span class="n">state</span><span class="p">;</span>
-<a name="line-72"></a> <span class="c1">// temporary data</span>
-<a name="line-73"></a> <span class="n">YFPhoto</span><span class="o">*</span> <span class="n">lastPhoto</span><span class="p">;</span>
-<a name="line-74"></a> <span class="n">QString</span> <span class="n">lastPhotosUrl</span><span class="p">;</span>
-<a name="line-75"></a>
-<a name="line-76"></a> <span class="c1">// for albums pagination</span>
-<a name="line-77"></a> <span class="c1">//in listAlbums()</span>
-<a name="line-78"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">YandexFotkiAlbum</span><span class="o">&gt;</span> <span class="n">albums</span><span class="p">;</span>
-<a name="line-79"></a>
-<a name="line-80"></a> <span class="n">QString</span> <span class="n">albumsNextUrl</span><span class="p">;</span>
+<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;QDir&gt;</span><span class="cp"></span>
+<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QTest&gt;</span><span class="cp"></span>
+<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QDebug&gt;</span><span class="cp"></span>
+<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QUrl&gt;</span><span class="cp"></span>
+<a name="line-32"></a>
+<a name="line-33"></a><span class="c1">// Local includes</span>
+<a name="line-34"></a>
+<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&quot;albumfiltermodel.h&quot;</span><span class="cp"></span>
+<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&quot;albummanager.h&quot;</span><span class="cp"></span>
+<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&quot;albummodel.h&quot;</span><span class="cp"></span>
+<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&quot;applicationsettings.h&quot;</span><span class="cp"></span>
+<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&quot;albumthumbnailloader.h&quot;</span><span class="cp"></span>
+<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&quot;collectionlocation.h&quot;</span><span class="cp"></span>
+<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&quot;collectionmanager.h&quot;</span><span class="cp"></span>
+<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&quot;loadingcacheinterface.h&quot;</span><span class="cp"></span>
+<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&quot;scancontroller.h&quot;</span><span class="cp"></span>
+<a name="line-44"></a><span class="cp">#include</span> <span class="cpf">&quot;thumbnailloadthread.h&quot;</span><span class="cp"></span>
+<a name="line-45"></a><span class="cp">#include</span> <span class="cpf">&quot;modeltest.h&quot;</span><span class="cp"></span>
+<a name="line-46"></a>
+<a name="line-47"></a><span class="k">using</span> <span class="k">namespace</span> <span class="n">Digikam</span><span class="p">;</span>
+<a name="line-48"></a>
+<a name="line-49"></a><span class="k">const</span> <span class="n">QString</span> <span class="nf">IMAGE_PATH</span><span class="p">(</span><span class="n">QFINDTESTDATA</span><span class="p">(</span><span class="s">&quot;data/&quot;</span><span class="p">));</span>
+<a name="line-50"></a>
+<a name="line-51"></a><span class="n">QTEST_MAIN</span><span class="p">(</span><span class="n">AlbumModelTest</span><span class="p">)</span>
+<a name="line-52"></a>
+<a name="line-53"></a><span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">AlbumModelTest</span><span class="p">()</span>
+<a name="line-54"></a> <span class="o">:</span> <span class="n">albumCategory</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;DummyCategory&quot;</span><span class="p">)),</span>
+<a name="line-55"></a> <span class="n">palbumRoot0</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-56"></a> <span class="n">palbumRoot1</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-57"></a> <span class="n">palbumRoot2</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-58"></a> <span class="n">palbumChild0Root0</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-59"></a> <span class="n">palbumChild1Root0</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-60"></a> <span class="n">palbumChild2Root0</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-61"></a> <span class="n">palbumChild0Root1</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-62"></a> <span class="n">rootTag</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-63"></a> <span class="n">talbumRoot0</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-64"></a> <span class="n">talbumRoot1</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-65"></a> <span class="n">talbumChild0Root0</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-66"></a> <span class="n">talbumChild1Root0</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-67"></a> <span class="n">talbumChild0Child1Root0</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-68"></a> <span class="n">talbumChild0Root1</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-69"></a> <span class="n">startModel</span><span class="p">(</span><span class="k">nullptr</span><span class="p">)</span>
+<a name="line-70"></a><span class="p">{</span>
+<a name="line-71"></a><span class="p">}</span>
+<a name="line-72"></a>
+<a name="line-73"></a><span class="n">AlbumModelTest</span><span class="o">::~</span><span class="n">AlbumModelTest</span><span class="p">()</span>
+<a name="line-74"></a><span class="p">{</span>
+<a name="line-75"></a><span class="p">}</span>
+<a name="line-76"></a>
+<a name="line-77"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">initTestCase</span><span class="p">()</span>
+<a name="line-78"></a><span class="p">{</span>
+<a name="line-79"></a> <span class="n">tempSuffix</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;albummodeltest-&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QTime</span><span class="o">::</span><span class="n">currentTime</span><span class="p">().</span><span class="n">toString</span><span class="p">();</span>
+<a name="line-80"></a> <span class="n">dbPath</span> <span class="o">=</span> <span class="n">QDir</span><span class="o">::</span><span class="n">temp</span><span class="p">().</span><span class="n">absolutePath</span><span class="p">()</span> <span class="o">+</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">tempSuffix</span><span class="p">;</span>
<a name="line-81"></a>
-<a name="line-82"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">YFPhoto</span><span class="o">&gt;</span> <span class="n">photos</span><span class="p">;</span>
-<a name="line-83"></a> <span class="n">QString</span> <span class="n">photosNextUrl</span><span class="p">;</span>
-<a name="line-84"></a>
-<a name="line-85"></a> <span class="n">QNetworkAccessManager</span><span class="o">*</span> <span class="n">netMngr</span><span class="p">;</span>
-<a name="line-86"></a>
-<a name="line-87"></a> <span class="n">QNetworkReply</span><span class="o">*</span> <span class="n">reply</span><span class="p">;</span>
-<a name="line-88"></a>
-<a name="line-89"></a> <span class="c1">// Data buffer</span>
-<a name="line-90"></a> <span class="n">QByteArray</span> <span class="n">buffer</span><span class="p">;</span>
+<a name="line-82"></a> <span class="k">if</span> <span class="p">(</span><span class="n">QDir</span><span class="o">::</span><span class="n">temp</span><span class="p">().</span><span class="n">exists</span><span class="p">(</span><span class="n">tempSuffix</span><span class="p">))</span>
+<a name="line-83"></a> <span class="p">{</span>
+<a name="line-84"></a> <span class="n">QString</span> <span class="n">msg</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Error creating temp path&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">dbPath</span><span class="p">;</span>
+<a name="line-85"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="nb">false</span><span class="p">,</span> <span class="n">msg</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-86"></a> <span class="p">}</span>
+<a name="line-87"></a>
+<a name="line-88"></a> <span class="n">QDir</span><span class="o">::</span><span class="n">temp</span><span class="p">().</span><span class="n">mkdir</span><span class="p">(</span><span class="n">tempSuffix</span><span class="p">);</span>
+<a name="line-89"></a>
+<a name="line-90"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Using database path for test: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">dbPath</span><span class="p">;</span>
<a name="line-91"></a>
-<a name="line-92"></a> <span class="c1">// constants</span>
-<a name="line-93"></a> <span class="c1">// use QString instead of QUrl, we need .arg</span>
-<a name="line-94"></a> <span class="k">static</span> <span class="k">const</span> <span class="n">QString</span> <span class="n">SESSION_URL</span><span class="p">;</span>
-<a name="line-95"></a> <span class="k">static</span> <span class="k">const</span> <span class="n">QString</span> <span class="n">TOKEN_URL</span><span class="p">;</span>
-<a name="line-96"></a> <span class="k">static</span> <span class="k">const</span> <span class="n">QString</span> <span class="n">SERVICE_URL</span><span class="p">;</span>
-<a name="line-97"></a> <span class="k">static</span> <span class="k">const</span> <span class="n">QString</span> <span class="n">AUTH_REALM</span><span class="p">;</span>
-<a name="line-98"></a> <span class="k">static</span> <span class="k">const</span> <span class="n">QString</span> <span class="n">ACCESS_STRINGS</span><span class="p">[];</span>
-<a name="line-99"></a><span class="p">};</span>
-<a name="line-100"></a>
-<a name="line-101"></a><span class="cm">/*</span>
-<a name="line-102"></a><span class="cm"> * static API constants</span>
-<a name="line-103"></a><span class="cm"> */</span>
-<a name="line-104"></a><span class="k">const</span> <span class="n">QString</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">SESSION_URL</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;http://auth.mobile.yandex.ru/yamrsa/key/&quot;</span><span class="p">);</span>
-<a name="line-105"></a><span class="k">const</span> <span class="n">QString</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">AUTH_REALM</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;fotki.yandex.ru&quot;</span><span class="p">);</span>
-<a name="line-106"></a><span class="k">const</span> <span class="n">QString</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">TOKEN_URL</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;http://auth.mobile.yandex.ru/yamrsa/token/&quot;</span><span class="p">);</span>
-<a name="line-107"></a><span class="k">const</span> <span class="n">QString</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">SERVICE_URL</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;http://api-fotki.yandex.ru/api/users/%1/&quot;</span><span class="p">);</span>
-<a name="line-108"></a>
-<a name="line-109"></a><span class="k">const</span> <span class="n">QString</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">ACCESS_STRINGS</span><span class="p">[]</span> <span class="o">=</span>
-<a name="line-110"></a><span class="p">{</span>
-<a name="line-111"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;public&quot;</span><span class="p">),</span>
-<a name="line-112"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;friends&quot;</span><span class="p">),</span>
-<a name="line-113"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;private&quot;</span><span class="p">)</span>
-<a name="line-114"></a><span class="p">};</span>
+<a name="line-92"></a> <span class="n">ApplicationSettings</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">setShowFolderTreeViewItemsCount</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-93"></a>
+<a name="line-94"></a> <span class="c1">// use a testing database</span>
+<a name="line-95"></a>
+<a name="line-96"></a> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">();</span>
+<a name="line-97"></a>
+<a name="line-98"></a> <span class="c1">// catch palbum counts for waiting</span>
+<a name="line-99"></a>
+<a name="line-100"></a> <span class="n">connect</span><span class="p">(</span><span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">(),</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalPAlbumsDirty</span><span class="p">(</span><span class="n">QMap</span><span class="o">&lt;</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="o">&gt;</span><span class="p">)),</span>
+<a name="line-101"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setLastPAlbumCountMap</span><span class="p">(</span><span class="n">QMap</span><span class="o">&lt;</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="o">&gt;</span><span class="p">)));</span>
+<a name="line-102"></a>
+<a name="line-103"></a> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">checkDatabaseDirsAfterFirstRun</span><span class="p">(</span><span class="n">QDir</span><span class="o">::</span><span class="n">temp</span><span class="p">().</span><span class="n">absoluteFilePath</span><span class="p">(</span>
+<a name="line-104"></a> <span class="n">tempSuffix</span><span class="p">),</span> <span class="n">QDir</span><span class="o">::</span><span class="n">temp</span><span class="p">().</span><span class="n">absoluteFilePath</span><span class="p">(</span><span class="n">tempSuffix</span><span class="p">));</span>
+<a name="line-105"></a> <span class="n">DbEngineParameters</span> <span class="nf">params</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;QSQLITE&quot;</span><span class="p">),</span> <span class="n">QDir</span><span class="o">::</span><span class="n">temp</span><span class="p">().</span><span class="n">absoluteFilePath</span><span class="p">(</span><span class="n">tempSuffix</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/digikam4.db&quot;</span><span class="p">)),</span>
+<a name="line-106"></a> <span class="n">QString</span><span class="p">(),</span> <span class="n">QString</span><span class="p">(),</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="n">QString</span><span class="p">(),</span> <span class="n">QString</span><span class="p">());</span>
+<a name="line-107"></a> <span class="kt">bool</span> <span class="n">dbChangeGood</span> <span class="o">=</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">setDatabase</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>
+<a name="line-108"></a> <span class="n">QDir</span><span class="o">::</span><span class="n">temp</span><span class="p">().</span><span class="n">absoluteFilePath</span><span class="p">(</span><span class="n">tempSuffix</span><span class="p">));</span>
+<a name="line-109"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="n">dbChangeGood</span><span class="p">,</span> <span class="s">&quot;Could not set temp album db&quot;</span><span class="p">);</span>
+<a name="line-110"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">CollectionLocation</span><span class="o">&gt;</span> <span class="n">locs</span> <span class="o">=</span> <span class="n">CollectionManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allAvailableLocations</span><span class="p">();</span>
+<a name="line-111"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="n">locs</span><span class="p">.</span><span class="n">size</span><span class="p">(),</span> <span class="s">&quot;Failed to auto-create one collection in setDatabase&quot;</span><span class="p">);</span>
+<a name="line-112"></a>
+<a name="line-113"></a> <span class="n">ScanController</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">completeCollectionScan</span><span class="p">();</span>
+<a name="line-114"></a> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">startScan</span><span class="p">();</span>
<a name="line-115"></a>
-<a name="line-116"></a><span class="k">const</span> <span class="n">QString</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">USERPAGE_URL</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;http://fotki.yandex.ru/users/%1/&quot;</span><span class="p">);</span>
-<a name="line-117"></a><span class="k">const</span> <span class="n">QString</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">USERPAGE_DEFAULT_URL</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;http://fotki.yandex.ru/&quot;</span><span class="p">);</span>
+<a name="line-116"></a> <span class="n">AlbumList</span> <span class="n">all</span> <span class="o">=</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allPAlbums</span><span class="p">();</span>
+<a name="line-117"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;PAlbum registered : &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">all</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
<a name="line-118"></a>
-<a name="line-119"></a><span class="c1">// ------------------------------------------------------------</span>
-<a name="line-120"></a>
-<a name="line-121"></a><span class="n">YFTalker</span><span class="o">::</span><span class="n">YFTalker</span><span class="p">(</span><span class="n">QObject</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span><span class="p">)</span>
-<a name="line-122"></a> <span class="o">:</span> <span class="n">QObject</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span>
-<a name="line-123"></a> <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">Private</span><span class="p">)</span>
-<a name="line-124"></a><span class="p">{</span>
-<a name="line-125"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QNetworkAccessManager</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
+<a name="line-119"></a> <span class="n">foreach</span> <span class="p">(</span><span class="n">Album</span><span class="o">*</span> <span class="k">const</span> <span class="n">a</span><span class="p">,</span> <span class="n">all</span><span class="p">)</span>
+<a name="line-120"></a> <span class="p">{</span>
+<a name="line-121"></a> <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">)</span>
+<a name="line-122"></a> <span class="p">{</span>
+<a name="line-123"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; ==&gt; Id : &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">a</span><span class="o">-&gt;</span><span class="n">id</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; , is root : &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">a</span><span class="o">-&gt;</span><span class="n">isRoot</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; , title : &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">a</span><span class="o">-&gt;</span><span class="n">title</span><span class="p">();</span>
+<a name="line-124"></a> <span class="p">}</span>
+<a name="line-125"></a> <span class="p">}</span>
<a name="line-126"></a>
-<a name="line-127"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">finished</span><span class="p">(</span><span class="n">QNetworkReply</span><span class="o">*</span><span class="p">)),</span>
-<a name="line-128"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotFinished</span><span class="p">(</span><span class="n">QNetworkReply</span><span class="o">*</span><span class="p">)));</span>
-<a name="line-129"></a><span class="p">}</span>
-<a name="line-130"></a>
-<a name="line-131"></a><span class="n">YFTalker</span><span class="o">::~</span><span class="n">YFTalker</span><span class="p">()</span>
-<a name="line-132"></a><span class="p">{</span>
-<a name="line-133"></a> <span class="n">reset</span><span class="p">();</span>
-<a name="line-134"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
-<a name="line-135"></a><span class="p">}</span>
-<a name="line-136"></a>
-<a name="line-137"></a><span class="n">YFTalker</span><span class="o">::</span><span class="n">State</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">state</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-138"></a><span class="p">{</span>
-<a name="line-139"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span><span class="p">;</span>
-<a name="line-140"></a><span class="p">}</span>
-<a name="line-141"></a>
-<a name="line-142"></a><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">sessionKey</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-143"></a><span class="p">{</span>
-<a name="line-144"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sessionKey</span><span class="p">;</span>
-<a name="line-145"></a><span class="p">}</span>
-<a name="line-146"></a>
-<a name="line-147"></a><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">sessionId</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-148"></a><span class="p">{</span>
-<a name="line-149"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sessionId</span><span class="p">;</span>
-<a name="line-150"></a><span class="p">}</span>
-<a name="line-151"></a>
-<a name="line-152"></a><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">token</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-153"></a><span class="p">{</span>
-<a name="line-154"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">token</span><span class="p">;</span>
-<a name="line-155"></a><span class="p">}</span>
-<a name="line-156"></a>
-<a name="line-157"></a><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">login</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-158"></a><span class="p">{</span>
-<a name="line-159"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">login</span><span class="p">;</span>
-<a name="line-160"></a><span class="p">}</span>
-<a name="line-161"></a>
-<a name="line-162"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">setLogin</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">login</span><span class="p">)</span>
-<a name="line-163"></a><span class="p">{</span>
-<a name="line-164"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">login</span> <span class="o">=</span> <span class="n">login</span><span class="p">;</span>
-<a name="line-165"></a><span class="p">}</span>
-<a name="line-166"></a>
-<a name="line-167"></a><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">password</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-168"></a><span class="p">{</span>
-<a name="line-169"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">password</span><span class="p">;</span>
-<a name="line-170"></a><span class="p">}</span>
-<a name="line-171"></a>
-<a name="line-172"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">setPassword</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">password</span><span class="p">)</span>
-<a name="line-173"></a><span class="p">{</span>
-<a name="line-174"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">password</span> <span class="o">=</span> <span class="n">password</span><span class="p">;</span>
-<a name="line-175"></a><span class="p">}</span>
+<a name="line-127"></a> <span class="n">QVERIFY2</span><span class="p">(</span> <span class="n">all</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">==</span> <span class="mi">3</span><span class="p">,</span> <span class="s">&quot;Failed to scan empty directory. We must have one root album, one album, and one trash.&quot;</span><span class="p">);</span>
+<a name="line-128"></a><span class="p">}</span>
+<a name="line-129"></a>
+<a name="line-130"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">cleanupTestCase</span><span class="p">()</span>
+<a name="line-131"></a><span class="p">{</span>
+<a name="line-132"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start AlbumModelTest::cleanupTestCase()&quot;</span><span class="p">;</span>
+<a name="line-133"></a>
+<a name="line-134"></a> <span class="n">ScanController</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">shutDown</span><span class="p">();</span>
+<a name="line-135"></a> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">cleanUp</span><span class="p">();</span>
+<a name="line-136"></a> <span class="n">ThumbnailLoadThread</span><span class="o">::</span><span class="n">cleanUp</span><span class="p">();</span>
+<a name="line-137"></a> <span class="n">AlbumThumbnailLoader</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">cleanUp</span><span class="p">();</span>
+<a name="line-138"></a> <span class="n">LoadingCacheInterface</span><span class="o">::</span><span class="n">cleanUp</span><span class="p">();</span>
+<a name="line-139"></a>
+<a name="line-140"></a> <span class="n">QDir</span> <span class="nf">dir</span><span class="p">(</span><span class="n">dbPath</span><span class="p">);</span>
+<a name="line-141"></a> <span class="n">dir</span><span class="p">.</span><span class="n">removeRecursively</span><span class="p">();</span>
+<a name="line-142"></a>
+<a name="line-143"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;deleted test folder &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">dbPath</span><span class="p">;</span>
+<a name="line-144"></a><span class="p">}</span>
+<a name="line-145"></a>
+<a name="line-146"></a><span class="c1">// Qt test doesn&#39;t use exceptions, so using assertion macros in methods called</span>
+<a name="line-147"></a><span class="c1">// from a test slot doesn&#39;t stop the test method and may result in inconsistent</span>
+<a name="line-148"></a><span class="c1">// data or segfaults. Therefore use macros for these functions.</span>
+<a name="line-149"></a>
+<a name="line-150"></a><span class="cp">#define safeCreatePAlbum(parent, name, result) \</span>
+<a name="line-151"></a><span class="cp">{ \</span>
+<a name="line-152"></a><span class="cp"> QString error; \</span>
+<a name="line-153"></a><span class="cp"> result = AlbumManager::instance()-&gt;createPAlbum(parent, name, name, \</span>
+<a name="line-154"></a><span class="cp"> QDate::currentDate(), albumCategory, error); \</span>
+<a name="line-155"></a><span class="cp"> QVERIFY2(result, QString::fromUtf8(&quot;Error creating PAlbum for test: %1&quot;).arg(error).toLatin1().constData()); \</span>
+<a name="line-156"></a><span class="cp">}</span>
+<a name="line-157"></a>
+<a name="line-158"></a><span class="cp">#define safeCreateTAlbum(parent, name, result) \</span>
+<a name="line-159"></a><span class="cp">{ \</span>
+<a name="line-160"></a><span class="cp"> QString error; \</span>
+<a name="line-161"></a><span class="cp"> result = AlbumManager::instance()-&gt;createTAlbum(parent, name, QLatin1String(&quot;&quot;), error); \</span>
+<a name="line-162"></a><span class="cp"> QVERIFY2(result, QString::fromUtf8(&quot;Error creating TAlbum for test: %1&quot;).arg(error).toLatin1().constData()); \</span>
+<a name="line-163"></a><span class="cp">}</span>
+<a name="line-164"></a>
+<a name="line-165"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">init</span><span class="p">()</span>
+<a name="line-166"></a><span class="p">{</span>
+<a name="line-167"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start AlbumModelTest::init()&quot;</span><span class="p">;</span>
+<a name="line-168"></a>
+<a name="line-169"></a> <span class="n">palbumCountMap</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
+<a name="line-170"></a>
+<a name="line-171"></a> <span class="c1">// create a model to check that model work is done correctly while scanning</span>
+<a name="line-172"></a>
+<a name="line-173"></a> <span class="n">addedIds</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
+<a name="line-174"></a> <span class="n">startModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AlbumModel</span><span class="p">;</span>
+<a name="line-175"></a> <span class="n">startModel</span><span class="o">-&gt;</span><span class="n">setShowCount</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-176"></a>
-<a name="line-177"></a><span class="kt">bool</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">isAuthenticated</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-178"></a><span class="p">{</span>
-<a name="line-179"></a> <span class="k">return</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">&amp;</span> <span class="n">STATE_AUTHENTICATED</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-180"></a><span class="p">}</span>
-<a name="line-181"></a>
-<a name="line-182"></a><span class="kt">bool</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">isErrorState</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-183"></a><span class="p">{</span>
-<a name="line-184"></a> <span class="k">return</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">&amp;</span> <span class="n">STATE_ERROR</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-185"></a><span class="p">}</span>
-<a name="line-186"></a>
-<a name="line-187"></a><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">YandexFotkiAlbum</span><span class="o">&gt;&amp;</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">albums</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-188"></a><span class="p">{</span>
-<a name="line-189"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albums</span><span class="p">;</span>
-<a name="line-190"></a><span class="p">}</span>
-<a name="line-191"></a>
-<a name="line-192"></a><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">YFPhoto</span><span class="o">&gt;&amp;</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">photos</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-193"></a><span class="p">{</span>
-<a name="line-194"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">;</span>
-<a name="line-195"></a><span class="p">}</span>
-<a name="line-196"></a>
-<a name="line-197"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">getService</span><span class="p">()</span>
-<a name="line-198"></a><span class="p">{</span>
-<a name="line-199"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_GETSERVICE</span><span class="p">;</span>
-<a name="line-200"></a>
-<a name="line-201"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">SERVICE_URL</span><span class="p">.</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">login</span><span class="p">));</span>
-<a name="line-202"></a>
-<a name="line-203"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">get</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="p">(</span><span class="n">url</span><span class="p">));</span>
-<a name="line-204"></a>
-<a name="line-205"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-206"></a><span class="p">}</span>
-<a name="line-207"></a>
-<a name="line-208"></a><span class="cm">/*</span>
-<a name="line-209"></a><span class="cm">void YFTalker::checkToken()</span>
-<a name="line-210"></a><span class="cm">{</span>
-<a name="line-211"></a><span class="cm"> // try to get something with our token, if it is invalid catch 401</span>
-<a name="line-212"></a><span class="cm"> d-&gt;state = STATE_CHECKTOKEN;</span>
-<a name="line-213"></a>
-<a name="line-214"></a><span class="cm"> QUrl url(d-&gt;apiAlbumsUrl);</span>
-<a name="line-215"></a><span class="cm"> QNetworkRequest netRequest(url);</span>
-<a name="line-216"></a><span class="cm"> netRequest.setRawHeader(&quot;Authorization&quot;, QString::fromLatin1(&quot;FimpToken realm=\&quot;%1\&quot;, token=\&quot;%2\&quot;&quot;)</span>
-<a name="line-217"></a><span class="cm"> .arg(AUTH_REALM).arg(d-&gt;token).toLatin1());</span>
-<a name="line-218"></a>
-<a name="line-219"></a><span class="cm"> d-&gt;reply = d-&gt;netMngr-&gt;get(netRequest);</span>
+<a name="line-177"></a> <span class="n">connect</span><span class="p">(</span><span class="n">startModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">rowsInserted</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
+<a name="line-178"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotStartModelRowsInserted</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)));</span>
+<a name="line-179"></a>
+<a name="line-180"></a> <span class="n">connect</span><span class="p">(</span><span class="n">startModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">dataChanged</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="n">QModelIndex</span><span class="p">)),</span>
+<a name="line-181"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotStartModelDataChanged</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="n">QModelIndex</span><span class="p">)));</span>
+<a name="line-182"></a>
+<a name="line-183"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Created startModel&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">startModel</span><span class="p">;</span>
+<a name="line-184"></a>
+<a name="line-185"></a> <span class="c1">// ensure that this model is empty in the beginning except for the root</span>
+<a name="line-186"></a> <span class="c1">// album and the collection that include trash</span>
+<a name="line-187"></a>
+<a name="line-188"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">startModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(),</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-189"></a> <span class="n">QModelIndex</span> <span class="n">rootIndex</span> <span class="o">=</span> <span class="n">startModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-190"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">startModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">rootIndex</span><span class="p">),</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-191"></a> <span class="n">QModelIndex</span> <span class="n">collectionIndex</span> <span class="o">=</span> <span class="n">startModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">rootIndex</span><span class="p">);</span>
+<a name="line-192"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">startModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">collectionIndex</span><span class="p">),</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-193"></a>
+<a name="line-194"></a> <span class="c1">// insert some test data</span>
+<a name="line-195"></a>
+<a name="line-196"></a> <span class="c1">// physical albums</span>
+<a name="line-197"></a>
+<a name="line-198"></a> <span class="c1">// create two of them by creating directories and scanning</span>
+<a name="line-199"></a>
+<a name="line-200"></a> <span class="n">QDir</span> <span class="nf">dir</span><span class="p">(</span><span class="n">dbPath</span><span class="p">);</span>
+<a name="line-201"></a> <span class="n">dir</span><span class="p">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;root0&quot;</span><span class="p">));</span>
+<a name="line-202"></a> <span class="n">dir</span><span class="p">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;root1&quot;</span><span class="p">));</span>
+<a name="line-203"></a>
+<a name="line-204"></a> <span class="n">ScanController</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">completeCollectionScan</span><span class="p">();</span>
+<a name="line-205"></a> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">refresh</span><span class="p">();</span>
+<a name="line-206"></a>
+<a name="line-207"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allPAlbums</span><span class="p">().</span><span class="n">size</span><span class="p">(),</span> <span class="mi">5</span><span class="p">);</span>
+<a name="line-208"></a>
+<a name="line-209"></a><span class="hll"> <span class="n">QString</span> <span class="n">error</span><span class="p">;</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span>
+</span><a name="line-210"></a> <span class="n">palbumRoot0</span> <span class="o">=</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">findPAlbum</span><span class="p">(</span><span class="n">QUrl</span><span class="o">::</span><span class="n">fromLocalFile</span><span class="p">(</span><span class="n">dbPath</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/root0&quot;</span><span class="p">)));</span>
+<a name="line-211"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="n">palbumRoot0</span><span class="p">,</span> <span class="s">&quot;Error having PAlbum root0 in AlbumManager&quot;</span><span class="p">);</span>
+<a name="line-212"></a> <span class="n">palbumRoot1</span> <span class="o">=</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">findPAlbum</span><span class="p">(</span><span class="n">QUrl</span><span class="o">::</span><span class="n">fromLocalFile</span><span class="p">(</span><span class="n">dbPath</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/root1&quot;</span><span class="p">)));</span>
+<a name="line-213"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="n">palbumRoot1</span><span class="p">,</span> <span class="s">&quot;Error having PAlbum root1 in AlbumManager&quot;</span><span class="p">);</span>
+<a name="line-214"></a>
+<a name="line-215"></a> <span class="c1">// Create some more through AlbumManager</span>
+<a name="line-216"></a>
+<a name="line-217"></a> <span class="n">palbumRoot2</span> <span class="o">=</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">createPAlbum</span><span class="p">(</span><span class="n">dbPath</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;root2&quot;</span><span class="p">),</span>
+<a name="line-218"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;root album 2&quot;</span><span class="p">),</span> <span class="n">QDate</span><span class="o">::</span><span class="n">currentDate</span><span class="p">(),</span> <span class="n">albumCategory</span><span class="p">,</span> <span class="n">error</span><span class="p">);</span>
+<a name="line-219"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="n">palbumRoot2</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;Error creating PAlbum for test: %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">error</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
<a name="line-220"></a>
-<a name="line-221"></a><span class="cm"> // Error: STATE_CHECKTOKEN_INVALID</span>
-<a name="line-222"></a><span class="cm"> // Function: slotParseResponseCheckToken()</span>
-<a name="line-223"></a>
-<a name="line-224"></a><span class="cm"> d-&gt;buffer.resize(0);</span>
-<a name="line-225"></a><span class="cm">}</span>
-<a name="line-226"></a><span class="cm">*/</span>
-<a name="line-227"></a>
-<a name="line-228"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">getSession</span><span class="p">()</span>
-<a name="line-229"></a><span class="p">{</span>
-<a name="line-230"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">!=</span> <span class="n">STATE_GETSERVICE_DONE</span><span class="p">)</span>
-<a name="line-231"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-232"></a>
-<a name="line-233"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_GETSESSION</span><span class="p">;</span>
+<a name="line-221"></a><span class="hll"> <span class="n">safeCreatePAlbum</span><span class="p">(</span><span class="n">palbumRoot0</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;root0child0&quot;</span><span class="p">),</span> <span class="n">palbumChild0Root0</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-222"></a><span class="hll"> <span class="n">safeCreatePAlbum</span><span class="p">(</span><span class="n">palbumRoot0</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;root0child1&quot;</span><span class="p">),</span> <span class="n">palbumChild1Root0</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-223"></a> <span class="k">const</span> <span class="n">QString</span> <span class="n">sameName</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;sameName Album&quot;</span><span class="p">);</span>
+<a name="line-224"></a><span class="hll"> <span class="n">safeCreatePAlbum</span><span class="p">(</span><span class="n">palbumRoot0</span><span class="p">,</span> <span class="n">sameName</span><span class="p">,</span> <span class="n">palbumChild2Root0</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-225"></a>
+<a name="line-226"></a><span class="hll"> <span class="n">safeCreatePAlbum</span><span class="p">(</span><span class="n">palbumRoot1</span><span class="p">,</span> <span class="n">sameName</span><span class="p">,</span> <span class="n">palbumChild0Root1</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-227"></a>
+<a name="line-228"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;AlbumManager now knows these PAlbums:&quot;</span><span class="p">;</span>
+<a name="line-229"></a>
+<a name="line-230"></a> <span class="n">foreach</span> <span class="p">(</span><span class="n">Album</span><span class="o">*</span> <span class="k">const</span> <span class="n">a</span><span class="p">,</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allPAlbums</span><span class="p">())</span>
+<a name="line-231"></a> <span class="p">{</span>
+<a name="line-232"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;</span><span class="se">\t</span><span class="s">&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">a</span><span class="o">-&gt;</span><span class="n">title</span><span class="p">();</span>
+<a name="line-233"></a> <span class="p">}</span>
<a name="line-234"></a>
-<a name="line-235"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">SESSION_URL</span><span class="p">);</span>
+<a name="line-235"></a> <span class="c1">// tags</span>
<a name="line-236"></a>
-<a name="line-237"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">get</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="p">(</span><span class="n">url</span><span class="p">));</span>
-<a name="line-238"></a>
-<a name="line-239"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-240"></a><span class="p">}</span>
-<a name="line-241"></a>
-<a name="line-242"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">getToken</span><span class="p">()</span>
-<a name="line-243"></a><span class="p">{</span>
-<a name="line-244"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">!=</span> <span class="n">STATE_GETSESSION_DONE</span><span class="p">)</span>
-<a name="line-245"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-246"></a>
-<a name="line-247"></a> <span class="k">const</span> <span class="n">QString</span> <span class="n">credentials</span> <span class="o">=</span> <span class="n">YFAuth</span><span class="o">::</span><span class="n">makeCredentials</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sessionKey</span><span class="p">,</span>
-<a name="line-248"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">login</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">password</span><span class="p">);</span>
-<a name="line-249"></a>
-<a name="line-250"></a> <span class="c1">// prepare params</span>
-<a name="line-251"></a> <span class="n">QStringList</span> <span class="n">paramList</span><span class="p">;</span>
-<a name="line-252"></a>
-<a name="line-253"></a> <span class="n">paramList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;request_id=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sessionId</span><span class="p">);</span>
-<a name="line-254"></a>
-<a name="line-255"></a> <span class="n">paramList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;credentials=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">QUrl</span><span class="o">::</span><span class="n">toPercentEncoding</span><span class="p">(</span><span class="n">credentials</span><span class="p">)));</span>
-<a name="line-256"></a>
-<a name="line-257"></a> <span class="n">QString</span> <span class="n">params</span> <span class="o">=</span> <span class="n">paramList</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;&amp;&#39;</span><span class="p">));</span>
-<a name="line-258"></a>
-<a name="line-259"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_GETTOKEN</span><span class="p">;</span>
+<a name="line-237"></a> <span class="n">rootTag</span> <span class="o">=</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">findTAlbum</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-238"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">rootTag</span><span class="p">);</span>
+<a name="line-239"></a>
+<a name="line-240"></a><span class="hll"> <span class="n">safeCreateTAlbum</span><span class="p">(</span><span class="n">rootTag</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;root0&quot;</span><span class="p">),</span> <span class="n">talbumRoot0</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-241"></a><span class="hll"> <span class="n">safeCreateTAlbum</span><span class="p">(</span><span class="n">rootTag</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;root1&quot;</span><span class="p">),</span> <span class="n">talbumRoot1</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-242"></a>
+<a name="line-243"></a><span class="hll"> <span class="n">safeCreateTAlbum</span><span class="p">(</span><span class="n">talbumRoot0</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;child0 root 0&quot;</span><span class="p">),</span> <span class="n">talbumChild0Root0</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-244"></a><span class="hll"> <span class="n">safeCreateTAlbum</span><span class="p">(</span><span class="n">talbumRoot0</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;child1 root 0&quot;</span><span class="p">),</span> <span class="n">talbumChild1Root0</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-245"></a>
+<a name="line-246"></a><span class="hll"> <span class="n">safeCreateTAlbum</span><span class="p">(</span><span class="n">talbumChild1Root0</span><span class="p">,</span> <span class="n">sameName</span><span class="p">,</span> <span class="n">talbumChild0Child1Root0</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-247"></a>
+<a name="line-248"></a><span class="hll"> <span class="n">safeCreateTAlbum</span><span class="p">(</span><span class="n">talbumRoot1</span><span class="p">,</span> <span class="n">sameName</span><span class="p">,</span> <span class="n">talbumChild0Root1</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-249"></a>
+<a name="line-250"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;created tags&quot;</span><span class="p">;</span>
+<a name="line-251"></a>
+<a name="line-252"></a> <span class="c1">// add some images for having date albums</span>
+<a name="line-253"></a>
+<a name="line-254"></a> <span class="n">QDir</span> <span class="nf">imageDir</span><span class="p">(</span><span class="n">IMAGE_PATH</span><span class="p">);</span>
+<a name="line-255"></a> <span class="n">imageDir</span><span class="p">.</span><span class="n">setNameFilters</span><span class="p">(</span><span class="n">QStringList</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;*.jpg&quot;</span><span class="p">));</span>
+<a name="line-256"></a> <span class="n">QStringList</span> <span class="n">imageFiles</span> <span class="o">=</span> <span class="n">imageDir</span><span class="p">.</span><span class="n">entryList</span><span class="p">();</span>
+<a name="line-257"></a>
+<a name="line-258"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;copying images &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">imageFiles</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; to &quot;</span>
+<a name="line-259"></a> <span class="o">&lt;&lt;</span> <span class="n">palbumChild0Root0</span><span class="o">-&gt;</span><span class="n">fileUrl</span><span class="p">();</span>
<a name="line-260"></a>
-<a name="line-261"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">TOKEN_URL</span><span class="p">);</span>
-<a name="line-262"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
-<a name="line-263"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/x-www-form-urlencoded&quot;</span><span class="p">));</span>
-<a name="line-264"></a>
-<a name="line-265"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">params</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">());</span>
-<a name="line-266"></a>
-<a name="line-267"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-268"></a><span class="p">}</span>
-<a name="line-269"></a>
-<a name="line-270"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">listAlbums</span><span class="p">()</span>
-<a name="line-271"></a><span class="p">{</span>
-<a name="line-272"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isErrorState</span><span class="p">()</span> <span class="o">||</span> <span class="o">!</span><span class="n">isAuthenticated</span><span class="p">())</span>
-<a name="line-273"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-274"></a>
-<a name="line-275"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albumsNextUrl</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">apiAlbumsUrl</span><span class="p">;</span>
-<a name="line-276"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albums</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
-<a name="line-277"></a> <span class="n">listAlbumsNext</span><span class="p">();</span>
-<a name="line-278"></a><span class="p">}</span>
+<a name="line-261"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">imageFile</span><span class="p">,</span> <span class="n">imageFiles</span><span class="p">)</span>
+<a name="line-262"></a> <span class="p">{</span>
+<a name="line-263"></a> <span class="n">QString</span> <span class="n">src</span> <span class="o">=</span> <span class="n">IMAGE_PATH</span> <span class="o">+</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">imageFile</span><span class="p">;</span>
+<a name="line-264"></a> <span class="n">QString</span> <span class="n">dst</span> <span class="o">=</span> <span class="n">palbumChild0Root0</span><span class="o">-&gt;</span><span class="n">fileUrl</span><span class="p">().</span><span class="n">toLocalFile</span><span class="p">()</span> <span class="o">+</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">imageFile</span><span class="p">;</span>
+<a name="line-265"></a> <span class="kt">bool</span> <span class="n">copied</span> <span class="o">=</span> <span class="n">QFile</span><span class="o">::</span><span class="n">copy</span><span class="p">(</span><span class="n">src</span><span class="p">,</span> <span class="n">dst</span><span class="p">);</span>
+<a name="line-266"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="n">copied</span><span class="p">,</span> <span class="s">&quot;Test images must be copied&quot;</span><span class="p">);</span>
+<a name="line-267"></a> <span class="p">}</span>
+<a name="line-268"></a>
+<a name="line-269"></a> <span class="n">ScanController</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">completeCollectionScan</span><span class="p">();</span>
+<a name="line-270"></a>
+<a name="line-271"></a> <span class="k">if</span> <span class="p">(</span><span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allDAlbums</span><span class="p">().</span><span class="n">count</span><span class="p">()</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">)</span>
+<a name="line-272"></a> <span class="p">{</span>
+<a name="line-273"></a> <span class="n">ensureItemCounts</span><span class="p">();</span>
+<a name="line-274"></a> <span class="p">}</span>
+<a name="line-275"></a>
+<a name="line-276"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;date albums: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allDAlbums</span><span class="p">();</span>
+<a name="line-277"></a>
+<a name="line-278"></a> <span class="c1">// root + 2 years + 2 and 3 months per year + (1997 as test year for date ordering with 12 months) = 21</span>
<a name="line-279"></a>
-<a name="line-280"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">listAlbumsNext</span><span class="p">()</span>
-<a name="line-281"></a><span class="p">{</span>
-<a name="line-282"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;listAlbumsNext&quot;</span><span class="p">;</span>
+<a name="line-280"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allDAlbums</span><span class="p">().</span><span class="n">size</span><span class="p">(),</span> <span class="mi">21</span><span class="p">);</span>
+<a name="line-281"></a>
+<a name="line-282"></a> <span class="c1">// ensure that there is a root date album</span>
<a name="line-283"></a>
-<a name="line-284"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_LISTALBUMS</span><span class="p">;</span>
-<a name="line-285"></a>
-<a name="line-286"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">albumsNextUrl</span><span class="p">);</span>
-<a name="line-287"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
-<a name="line-288"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/atom+xml; charset=utf-8; type=feed&quot;</span><span class="p">));</span>
-<a name="line-289"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;FimpToken realm=</span><span class="se">\&quot;</span><span class="s">%1</span><span class="se">\&quot;</span><span class="s">, token=</span><span class="se">\&quot;</span><span class="s">%2</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">)</span>
-<a name="line-290"></a> <span class="p">.</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">AUTH_REALM</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">token</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">());</span>
-<a name="line-291"></a>
-<a name="line-292"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">get</span><span class="p">(</span><span class="n">netRequest</span><span class="p">);</span>
-<a name="line-293"></a>
-<a name="line-294"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-295"></a><span class="p">}</span>
-<a name="line-296"></a>
-<a name="line-297"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">listPhotos</span><span class="p">(</span><span class="k">const</span> <span class="n">YandexFotkiAlbum</span><span class="o">&amp;</span> <span class="n">album</span><span class="p">)</span>
-<a name="line-298"></a><span class="p">{</span>
-<a name="line-299"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isErrorState</span><span class="p">()</span> <span class="o">||</span> <span class="o">!</span><span class="n">isAuthenticated</span><span class="p">())</span>
-<a name="line-300"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-301"></a>
-<a name="line-302"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photosNextUrl</span> <span class="o">=</span> <span class="n">album</span><span class="p">.</span><span class="n">m_apiPhotosUrl</span><span class="p">;</span>
-<a name="line-303"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
-<a name="line-304"></a> <span class="n">listPhotosNext</span><span class="p">();</span>
-<a name="line-305"></a><span class="p">}</span>
+<a name="line-284"></a> <span class="n">DAlbum</span><span class="o">*</span> <span class="k">const</span> <span class="n">rootFromAlbumManager</span> <span class="o">=</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">findDAlbum</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-285"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">rootFromAlbumManager</span><span class="p">);</span>
+<a name="line-286"></a> <span class="n">DAlbum</span><span class="o">*</span> <span class="n">rootFromList</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-287"></a>
+<a name="line-288"></a> <span class="n">foreach</span> <span class="p">(</span><span class="n">Album</span><span class="o">*</span> <span class="k">const</span> <span class="n">album</span><span class="p">,</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allDAlbums</span><span class="p">())</span>
+<a name="line-289"></a> <span class="p">{</span>
+<a name="line-290"></a> <span class="n">DAlbum</span><span class="o">*</span> <span class="k">const</span> <span class="n">dAlbum</span> <span class="o">=</span> <span class="k">dynamic_cast</span><span class="o">&lt;</span><span class="n">DAlbum</span><span class="o">*&gt;</span> <span class="p">(</span><span class="n">album</span><span class="p">);</span>
+<a name="line-291"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">dAlbum</span><span class="p">);</span>
+<a name="line-292"></a>
+<a name="line-293"></a> <span class="k">if</span> <span class="p">(</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">isRoot</span><span class="p">())</span>
+<a name="line-294"></a> <span class="p">{</span>
+<a name="line-295"></a> <span class="n">rootFromList</span> <span class="o">=</span> <span class="n">dAlbum</span><span class="p">;</span>
+<a name="line-296"></a> <span class="p">}</span>
+<a name="line-297"></a> <span class="p">}</span>
+<a name="line-298"></a>
+<a name="line-299"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">rootFromList</span><span class="p">);</span>
+<a name="line-300"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">rootFromList</span> <span class="o">==</span> <span class="n">rootFromAlbumManager</span><span class="p">);</span>
+<a name="line-301"></a><span class="p">}</span>
+<a name="line-302"></a>
+<a name="line-303"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">testStartAlbumModel</span><span class="p">()</span>
+<a name="line-304"></a><span class="p">{</span>
+<a name="line-305"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start AlbumModelTest::testStartAlbumModel()&quot;</span><span class="p">;</span>
<a name="line-306"></a>
-<a name="line-307"></a><span class="c1">// protected member</span>
-<a name="line-308"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">listPhotosNext</span><span class="p">()</span>
-<a name="line-309"></a><span class="p">{</span>
-<a name="line-310"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;listPhotosNext&quot;</span><span class="p">;</span>
-<a name="line-311"></a>
-<a name="line-312"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_LISTPHOTOS</span><span class="p">;</span>
-<a name="line-313"></a>
-<a name="line-314"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">photosNextUrl</span><span class="p">);</span>
-<a name="line-315"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
-<a name="line-316"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/atom+xml; charset=utf-8; type=feed&quot;</span><span class="p">));</span>
-<a name="line-317"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;FimpToken realm=</span><span class="se">\&quot;</span><span class="s">%1</span><span class="se">\&quot;</span><span class="s">, token=</span><span class="se">\&quot;</span><span class="s">%2</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">)</span>
-<a name="line-318"></a> <span class="p">.</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">AUTH_REALM</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">token</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">());</span>
+<a name="line-307"></a> <span class="c1">// verify that the start album model got all these changes</span>
+<a name="line-308"></a>
+<a name="line-309"></a> <span class="c1">// one root</span>
+<a name="line-310"></a>
+<a name="line-311"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">startModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(),</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-312"></a>
+<a name="line-313"></a> <span class="c1">// one collection</span>
+<a name="line-314"></a>
+<a name="line-315"></a> <span class="n">QModelIndex</span> <span class="n">rootIndex</span> <span class="o">=</span> <span class="n">startModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-316"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">startModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">rootIndex</span><span class="p">),</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-317"></a>
+<a name="line-318"></a> <span class="c1">// two albums in the collection</span>
<a name="line-319"></a>
-<a name="line-320"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">get</span><span class="p">(</span><span class="n">netRequest</span><span class="p">);</span>
-<a name="line-321"></a>
-<a name="line-322"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-323"></a><span class="p">}</span>
+<a name="line-320"></a> <span class="n">QModelIndex</span> <span class="n">collectionIndex</span> <span class="o">=</span> <span class="n">startModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">rootIndex</span><span class="p">);</span>
+<a name="line-321"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">startModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">collectionIndex</span><span class="p">),</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-322"></a>
+<a name="line-323"></a> <span class="c1">// this is should be enough for now</span>
<a name="line-324"></a>
-<a name="line-325"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">updatePhoto</span><span class="p">(</span><span class="n">YFPhoto</span><span class="o">&amp;</span> <span class="n">photo</span><span class="p">,</span> <span class="k">const</span> <span class="n">YandexFotkiAlbum</span><span class="o">&amp;</span> <span class="n">album</span><span class="p">)</span>
-<a name="line-326"></a><span class="p">{</span>
-<a name="line-327"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isErrorState</span><span class="p">()</span> <span class="o">||</span> <span class="o">!</span><span class="n">isAuthenticated</span><span class="p">())</span>
-<a name="line-328"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-329"></a>
-<a name="line-330"></a> <span class="c1">// sanity check</span>
-<a name="line-331"></a> <span class="k">if</span> <span class="p">(</span><span class="n">photo</span><span class="p">.</span><span class="n">title</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-332"></a> <span class="p">{</span>
-<a name="line-333"></a> <span class="n">photo</span><span class="p">.</span><span class="n">setTitle</span><span class="p">(</span><span class="n">QFileInfo</span><span class="p">(</span><span class="n">photo</span><span class="p">.</span><span class="n">localUrl</span><span class="p">()).</span><span class="n">baseName</span><span class="p">().</span><span class="n">trimmed</span><span class="p">());</span>
-<a name="line-334"></a> <span class="p">}</span>
-<a name="line-335"></a>
-<a name="line-336"></a> <span class="c1">// move photo to another album (if changed)</span>
-<a name="line-337"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_apiAlbumUrl</span> <span class="o">=</span> <span class="n">album</span><span class="p">.</span><span class="n">m_apiSelfUrl</span><span class="p">;</span>
-<a name="line-338"></a> <span class="c1">// FIXME: hack</span>
-<a name="line-339"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">lastPhotosUrl</span> <span class="o">=</span> <span class="n">album</span><span class="p">.</span><span class="n">m_apiPhotosUrl</span><span class="p">;</span>
-<a name="line-340"></a>
-<a name="line-341"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">photo</span><span class="p">.</span><span class="n">remoteUrl</span><span class="p">().</span><span class="n">isNull</span><span class="p">())</span>
-<a name="line-342"></a> <span class="p">{</span>
-<a name="line-343"></a> <span class="c1">// TODO: updating image file haven&#39;t yet supported by API</span>
-<a name="line-344"></a> <span class="c1">// so, just update info</span>
-<a name="line-345"></a> <span class="k">return</span> <span class="n">updatePhotoInfo</span><span class="p">(</span><span class="n">photo</span><span class="p">);</span>
-<a name="line-346"></a> <span class="p">}</span>
-<a name="line-347"></a> <span class="k">else</span>
-<a name="line-348"></a> <span class="p">{</span>
-<a name="line-349"></a> <span class="c1">// for new images also upload file</span>
-<a name="line-350"></a> <span class="n">updatePhotoFile</span><span class="p">(</span><span class="n">photo</span><span class="p">);</span>
-<a name="line-351"></a> <span class="p">}</span>
-<a name="line-352"></a><span class="p">}</span>
-<a name="line-353"></a>
-<a name="line-354"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">updatePhotoFile</span><span class="p">(</span><span class="n">YFPhoto</span><span class="o">&amp;</span> <span class="n">photo</span><span class="p">)</span>
-<a name="line-355"></a><span class="p">{</span>
-<a name="line-356"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;updatePhotoFile&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">photo</span><span class="p">;</span>
+<a name="line-325"></a> <span class="c1">// We must have received an added notation for everything except album root</span>
+<a name="line-326"></a> <span class="c1">// and collection</span>
+<a name="line-327"></a>
+<a name="line-328"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">addedIds</span><span class="p">.</span><span class="n">size</span><span class="p">(),</span> <span class="mi">7</span><span class="p">);</span>
+<a name="line-329"></a><span class="p">}</span>
+<a name="line-330"></a>
+<a name="line-331"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">ensureItemCounts</span><span class="p">()</span>
+<a name="line-332"></a><span class="p">{</span>
+<a name="line-333"></a> <span class="c1">// trigger listing job</span>
+<a name="line-334"></a>
+<a name="line-335"></a> <span class="n">QEventLoop</span> <span class="n">dAlbumLoop</span><span class="p">;</span>
+<a name="line-336"></a>
+<a name="line-337"></a> <span class="n">connect</span><span class="p">(</span><span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">(),</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalAllDAlbumsLoaded</span><span class="p">()),</span>
+<a name="line-338"></a> <span class="o">&amp;</span><span class="n">dAlbumLoop</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">quit</span><span class="p">()));</span>
+<a name="line-339"></a>
+<a name="line-340"></a> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">prepareItemCounts</span><span class="p">();</span>
+<a name="line-341"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Waiting for AlbumManager to create DAlbums...&quot;</span><span class="p">;</span>
+<a name="line-342"></a> <span class="n">dAlbumLoop</span><span class="p">.</span><span class="n">exec</span><span class="p">();</span>
+<a name="line-343"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DAlbums were created&quot;</span><span class="p">;</span>
+<a name="line-344"></a>
+<a name="line-345"></a> <span class="k">while</span> <span class="p">(</span><span class="n">palbumCountMap</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">&lt;</span> <span class="mi">8</span><span class="p">)</span>
+<a name="line-346"></a> <span class="p">{</span>
+<a name="line-347"></a> <span class="n">QEventLoop</span> <span class="n">pAlbumLoop</span><span class="p">;</span>
+<a name="line-348"></a>
+<a name="line-349"></a> <span class="n">connect</span><span class="p">(</span><span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">(),</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalPAlbumsDirty</span><span class="p">(</span><span class="n">QMap</span><span class="o">&lt;</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="o">&gt;</span><span class="p">)),</span>
+<a name="line-350"></a> <span class="o">&amp;</span><span class="n">pAlbumLoop</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">quit</span><span class="p">()));</span>
+<a name="line-351"></a>
+<a name="line-352"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Waiting for first PAlbum count map&quot;</span><span class="p">;</span>
+<a name="line-353"></a> <span class="n">pAlbumLoop</span><span class="p">.</span><span class="n">exec</span><span class="p">();</span>
+<a name="line-354"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Got new PAlbum count map&quot;</span><span class="p">;</span>
+<a name="line-355"></a> <span class="p">}</span>
+<a name="line-356"></a><span class="p">}</span>
<a name="line-357"></a>
-<a name="line-358"></a> <span class="n">QFile</span> <span class="nf">imageFile</span><span class="p">(</span><span class="n">photo</span><span class="p">.</span><span class="n">localUrl</span><span class="p">());</span>
-<a name="line-359"></a>
-<a name="line-360"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">imageFile</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="n">QIODevice</span><span class="o">::</span><span class="n">ReadOnly</span><span class="p">))</span>
-<a name="line-361"></a> <span class="p">{</span>
-<a name="line-362"></a> <span class="n">setErrorState</span><span class="p">(</span><span class="n">STATE_UPDATEPHOTO_FILE_ERROR</span><span class="p">);</span>
-<a name="line-363"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-364"></a> <span class="p">}</span>
-<a name="line-365"></a>
-<a name="line-366"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_UPDATEPHOTO_FILE</span><span class="p">;</span>
-<a name="line-367"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">lastPhoto</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">photo</span><span class="p">;</span>
-<a name="line-368"></a>
-<a name="line-369"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">lastPhotosUrl</span><span class="p">);</span>
-<a name="line-370"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
-<a name="line-371"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;image/jpeg&quot;</span><span class="p">));</span>
-<a name="line-372"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;FimpToken realm=</span><span class="se">\&quot;</span><span class="s">%1</span><span class="se">\&quot;</span><span class="s">, token=</span><span class="se">\&quot;</span><span class="s">%2</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">)</span>
-<a name="line-373"></a> <span class="p">.</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">AUTH_REALM</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">token</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">());</span>
-<a name="line-374"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Slug&quot;</span><span class="p">,</span> <span class="n">QUrl</span><span class="o">::</span><span class="n">toPercentEncoding</span><span class="p">(</span><span class="n">photo</span><span class="p">.</span><span class="n">title</span><span class="p">())</span> <span class="o">+</span> <span class="s">&quot;.jpg&quot;</span><span class="p">);</span>
+<a name="line-358"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">slotStartModelRowsInserted</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">parent</span><span class="p">,</span> <span class="kt">int</span> <span class="n">start</span><span class="p">,</span> <span class="kt">int</span> <span class="n">end</span><span class="p">)</span>
+<a name="line-359"></a><span class="p">{</span>
+<a name="line-360"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;called, parent:&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">parent</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;, start:&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">start</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;, end:&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">end</span><span class="p">;</span>
+<a name="line-361"></a>
+<a name="line-362"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">row</span> <span class="o">=</span> <span class="n">start</span> <span class="p">;</span> <span class="n">row</span> <span class="o">&lt;=</span> <span class="n">end</span> <span class="p">;</span> <span class="o">++</span><span class="n">row</span><span class="p">)</span>
+<a name="line-363"></a> <span class="p">{</span>
+<a name="line-364"></a> <span class="n">QModelIndex</span> <span class="n">child</span> <span class="o">=</span> <span class="n">startModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">parent</span><span class="p">);</span>
+<a name="line-365"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">child</span><span class="p">.</span><span class="n">isValid</span><span class="p">());</span>
+<a name="line-366"></a> <span class="n">Album</span><span class="o">*</span> <span class="n">album</span> <span class="o">=</span> <span class="n">startModel</span><span class="o">-&gt;</span><span class="n">albumForIndex</span><span class="p">(</span><span class="n">child</span><span class="p">);</span>
+<a name="line-367"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">id</span> <span class="o">=</span> <span class="n">child</span><span class="p">.</span><span class="n">data</span><span class="p">(</span><span class="n">AbstractAlbumModel</span><span class="o">::</span><span class="n">AlbumIdRole</span><span class="p">).</span><span class="n">toInt</span><span class="p">();</span>
+<a name="line-368"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">album</span><span class="p">);</span>
+<a name="line-369"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;added album with id&quot;</span>
+<a name="line-370"></a> <span class="o">&lt;&lt;</span> <span class="n">id</span>
+<a name="line-371"></a> <span class="o">&lt;&lt;</span> <span class="s">&quot;and name&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">album</span><span class="o">-&gt;</span><span class="n">title</span><span class="p">();</span>
+<a name="line-372"></a> <span class="n">addedIds</span> <span class="o">&lt;&lt;</span> <span class="n">id</span><span class="p">;</span>
+<a name="line-373"></a> <span class="p">}</span>
+<a name="line-374"></a><span class="p">}</span>
<a name="line-375"></a>
-<a name="line-376"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">imageFile</span><span class="p">.</span><span class="n">readAll</span><span class="p">());</span>
-<a name="line-377"></a>
-<a name="line-378"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-379"></a> <span class="n">imageFile</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
-<a name="line-380"></a><span class="p">}</span>
+<a name="line-376"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">slotStartModelDataChanged</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">topLeft</span><span class="p">,</span> <span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">bottomRight</span><span class="p">)</span>
+<a name="line-377"></a><span class="p">{</span>
+<a name="line-378"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">row</span> <span class="o">=</span> <span class="n">topLeft</span><span class="p">.</span><span class="n">row</span><span class="p">()</span> <span class="p">;</span> <span class="n">row</span> <span class="o">&lt;=</span> <span class="n">bottomRight</span><span class="p">.</span><span class="n">row</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">row</span><span class="p">)</span>
+<a name="line-379"></a> <span class="p">{</span>
+<a name="line-380"></a> <span class="n">QModelIndex</span> <span class="n">index</span> <span class="o">=</span> <span class="n">startModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">topLeft</span><span class="p">.</span><span class="n">column</span><span class="p">(),</span> <span class="n">topLeft</span><span class="p">.</span><span class="n">parent</span><span class="p">());</span>
<a name="line-381"></a>
-<a name="line-382"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">updatePhotoInfo</span><span class="p">(</span><span class="n">YFPhoto</span><span class="o">&amp;</span> <span class="n">photo</span><span class="p">)</span>
-<a name="line-383"></a><span class="p">{</span>
-<a name="line-384"></a> <span class="n">QDomDocument</span> <span class="n">doc</span><span class="p">;</span>
-<a name="line-385"></a> <span class="n">QDomProcessingInstruction</span> <span class="n">instr</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createProcessingInstruction</span><span class="p">(</span>
-<a name="line-386"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;xml&quot;</span><span class="p">),</span>
-<a name="line-387"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;version=&#39;1.0&#39; encoding=&#39;UTF-8&#39;&quot;</span><span class="p">));</span>
-<a name="line-388"></a>
-<a name="line-389"></a> <span class="n">doc</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">instr</span><span class="p">);</span>
-<a name="line-390"></a> <span class="n">QDomElement</span> <span class="n">entryElem</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;entry&quot;</span><span class="p">));</span>
-<a name="line-391"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;xmlns&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;http://www.w3.org/2005/Atom&quot;</span><span class="p">));</span>
-<a name="line-392"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;xmlns:f&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yandex:fotki&quot;</span><span class="p">));</span>
-<a name="line-393"></a> <span class="n">doc</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">entryElem</span><span class="p">);</span>
-<a name="line-394"></a>
-<a name="line-395"></a> <span class="n">QDomElement</span> <span class="n">urn</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;urn&quot;</span><span class="p">));</span>
-<a name="line-396"></a> <span class="n">urn</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">doc</span><span class="p">.</span><span class="n">createTextNode</span><span class="p">(</span><span class="n">photo</span><span class="p">.</span><span class="n">urn</span><span class="p">()));</span>
-<a name="line-397"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">urn</span><span class="p">);</span>
-<a name="line-398"></a>
-<a name="line-399"></a> <span class="n">QDomElement</span> <span class="n">title</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;title&quot;</span><span class="p">));</span>
-<a name="line-400"></a> <span class="n">title</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">doc</span><span class="p">.</span><span class="n">createTextNode</span><span class="p">(</span><span class="n">photo</span><span class="p">.</span><span class="n">title</span><span class="p">()));</span>
-<a name="line-401"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">title</span><span class="p">);</span>
-<a name="line-402"></a>
-<a name="line-403"></a> <span class="n">QDomElement</span> <span class="n">linkAlbum</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;link&quot;</span><span class="p">));</span>
-<a name="line-404"></a> <span class="n">linkAlbum</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">),</span> <span class="n">photo</span><span class="p">.</span><span class="n">m_apiAlbumUrl</span><span class="p">);</span>
-<a name="line-405"></a> <span class="n">linkAlbum</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rel&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;album&quot;</span><span class="p">));</span>
-<a name="line-406"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">linkAlbum</span><span class="p">);</span>
-<a name="line-407"></a>
-<a name="line-408"></a> <span class="n">QDomElement</span> <span class="n">summary</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;summary&quot;</span><span class="p">));</span>
-<a name="line-409"></a> <span class="n">summary</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">doc</span><span class="p">.</span><span class="n">createTextNode</span><span class="p">(</span><span class="n">photo</span><span class="p">.</span><span class="n">summary</span><span class="p">()));</span>
-<a name="line-410"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">summary</span><span class="p">);</span>
+<a name="line-382"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">index</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
+<a name="line-383"></a> <span class="p">{</span>
+<a name="line-384"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Illegal index received&quot;</span><span class="p">;</span>
+<a name="line-385"></a> <span class="k">continue</span><span class="p">;</span>
+<a name="line-386"></a> <span class="p">}</span>
+<a name="line-387"></a>
+<a name="line-388"></a> <span class="kt">int</span> <span class="n">albumId</span> <span class="o">=</span> <span class="n">index</span><span class="p">.</span><span class="n">data</span><span class="p">(</span><span class="n">AbstractAlbumModel</span><span class="o">::</span><span class="n">AlbumIdRole</span><span class="p">).</span><span class="n">toInt</span><span class="p">();</span>
+<a name="line-389"></a>
+<a name="line-390"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">addedIds</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">albumId</span><span class="p">))</span>
+<a name="line-391"></a> <span class="p">{</span>
+<a name="line-392"></a> <span class="n">QString</span> <span class="n">message</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Album id &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">albumId</span><span class="p">)</span> <span class="o">+</span>
+<a name="line-393"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot; was changed before adding signal was received&quot;</span><span class="p">);</span>
+<a name="line-394"></a> <span class="n">QFAIL</span><span class="p">(</span><span class="n">message</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-395"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">message</span><span class="p">;</span>
+<a name="line-396"></a> <span class="p">}</span>
+<a name="line-397"></a> <span class="p">}</span>
+<a name="line-398"></a><span class="p">}</span>
+<a name="line-399"></a>
+<a name="line-400"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">deletePAlbum</span><span class="p">(</span><span class="n">PAlbum</span><span class="o">*</span> <span class="n">album</span><span class="p">)</span>
+<a name="line-401"></a><span class="p">{</span>
+<a name="line-402"></a> <span class="n">QDir</span> <span class="n">dir</span><span class="p">(</span><span class="n">album</span><span class="o">-&gt;</span><span class="n">folderPath</span><span class="p">());</span>
+<a name="line-403"></a> <span class="n">dir</span><span class="p">.</span><span class="n">removeRecursively</span><span class="p">();</span>
+<a name="line-404"></a><span class="p">}</span>
+<a name="line-405"></a>
+<a name="line-406"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">setLastPAlbumCountMap</span><span class="p">(</span><span class="k">const</span> <span class="n">QMap</span><span class="o">&lt;</span><span class="kt">int</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&amp;</span><span class="n">map</span><span class="p">)</span>
+<a name="line-407"></a><span class="p">{</span>
+<a name="line-408"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Receiving new count map &quot;</span><span class="o">&lt;&lt;</span> <span class="n">map</span><span class="p">;</span>
+<a name="line-409"></a> <span class="n">palbumCountMap</span> <span class="o">=</span> <span class="n">map</span><span class="p">;</span>
+<a name="line-410"></a><span class="p">}</span>
<a name="line-411"></a>
-<a name="line-412"></a> <span class="n">QDomElement</span> <span class="n">adult</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;f:xxx&quot;</span><span class="p">));</span>
-<a name="line-413"></a> <span class="n">adult</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;value&quot;</span><span class="p">),</span> <span class="n">photo</span><span class="p">.</span><span class="n">isAdult</span><span class="p">()</span> <span class="o">?</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;true&quot;</span><span class="p">)</span> <span class="o">:</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;false&quot;</span><span class="p">));</span>
-<a name="line-414"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">adult</span><span class="p">);</span>
-<a name="line-415"></a>
-<a name="line-416"></a> <span class="n">QDomElement</span> <span class="n">hideOriginal</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;f:hide_original&quot;</span><span class="p">));</span>
-<a name="line-417"></a> <span class="n">hideOriginal</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;value&quot;</span><span class="p">),</span>
-<a name="line-418"></a> <span class="n">photo</span><span class="p">.</span><span class="n">isHideOriginal</span><span class="p">()</span> <span class="o">?</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;true&quot;</span><span class="p">)</span> <span class="o">:</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;false&quot;</span><span class="p">));</span>
-<a name="line-419"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">hideOriginal</span><span class="p">);</span>
-<a name="line-420"></a>
-<a name="line-421"></a> <span class="n">QDomElement</span> <span class="n">disableComments</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;f:disable_comments&quot;</span><span class="p">));</span>
-<a name="line-422"></a> <span class="n">disableComments</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;value&quot;</span><span class="p">),</span>
-<a name="line-423"></a> <span class="n">photo</span><span class="p">.</span><span class="n">isDisableComments</span><span class="p">()</span> <span class="o">?</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;true&quot;</span><span class="p">)</span> <span class="o">:</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;false&quot;</span><span class="p">));</span>
-<a name="line-424"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">disableComments</span><span class="p">);</span>
+<a name="line-412"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">cleanup</span><span class="p">()</span>
+<a name="line-413"></a><span class="p">{</span>
+<a name="line-414"></a> <span class="k">if</span> <span class="p">(</span><span class="n">startModel</span><span class="p">)</span>
+<a name="line-415"></a> <span class="p">{</span>
+<a name="line-416"></a> <span class="n">disconnect</span><span class="p">(</span><span class="n">startModel</span><span class="p">);</span>
+<a name="line-417"></a> <span class="p">}</span>
+<a name="line-418"></a>
+<a name="line-419"></a> <span class="k">delete</span> <span class="n">startModel</span><span class="p">;</span>
+<a name="line-420"></a> <span class="n">addedIds</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
+<a name="line-421"></a>
+<a name="line-422"></a> <span class="c1">// remove all test data</span>
+<a name="line-423"></a>
+<a name="line-424"></a> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">refresh</span><span class="p">();</span>
<a name="line-425"></a>
-<a name="line-426"></a> <span class="n">QDomElement</span> <span class="n">access</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;f:access&quot;</span><span class="p">));</span>
-<a name="line-427"></a> <span class="n">access</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;value&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">ACCESS_STRINGS</span><span class="p">[</span><span class="n">photo</span><span class="p">.</span><span class="n">access</span><span class="p">()]);</span>
-<a name="line-428"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">access</span><span class="p">);</span>
-<a name="line-429"></a>
-<a name="line-430"></a> <span class="c1">// FIXME: undocumented API</span>
-<a name="line-431"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">t</span><span class="p">,</span> <span class="n">photo</span><span class="p">.</span><span class="n">tags</span><span class="p">)</span>
-<a name="line-432"></a> <span class="p">{</span>
-<a name="line-433"></a> <span class="n">QDomElement</span> <span class="n">tag</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;category&quot;</span><span class="p">));</span>
-<a name="line-434"></a> <span class="n">tag</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;scheme&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">apiTagsUrl</span><span class="p">);</span>
-<a name="line-435"></a> <span class="n">tag</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;term&quot;</span><span class="p">),</span> <span class="n">t</span><span class="p">);</span>
-<a name="line-436"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>
-<a name="line-437"></a> <span class="p">}</span>
-<a name="line-438"></a>
-<a name="line-439"></a> <span class="n">QByteArray</span> <span class="n">buffer</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">toString</span><span class="p">(</span><span class="mi">1</span><span class="p">).</span><span class="n">toUtf8</span><span class="p">();</span> <span class="c1">// with idents</span>
-<a name="line-440"></a>
-<a name="line-441"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Prepared data: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">buffer</span><span class="p">;</span>
-<a name="line-442"></a>
-<a name="line-443"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">lastPhoto</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">photo</span><span class="p">;</span>
-<a name="line-444"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_UPDATEPHOTO_INFO</span><span class="p">;</span>
+<a name="line-426"></a> <span class="c1">// remove all palbums&#39; directories</span>
+<a name="line-427"></a>
+<a name="line-428"></a> <span class="n">deletePAlbum</span><span class="p">(</span><span class="n">palbumRoot0</span><span class="p">);</span>
+<a name="line-429"></a> <span class="n">deletePAlbum</span><span class="p">(</span><span class="n">palbumRoot1</span><span class="p">);</span>
+<a name="line-430"></a> <span class="n">deletePAlbum</span><span class="p">(</span><span class="n">palbumRoot2</span><span class="p">);</span>
+<a name="line-431"></a>
+<a name="line-432"></a> <span class="c1">// take over changes to database</span>
+<a name="line-433"></a>
+<a name="line-434"></a> <span class="n">ScanController</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">completeCollectionScan</span><span class="p">();</span>
+<a name="line-435"></a>
+<a name="line-436"></a> <span class="c1">// reread from database</span>
+<a name="line-437"></a>
+<a name="line-438"></a> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">refresh</span><span class="p">();</span>
+<a name="line-439"></a>
+<a name="line-440"></a> <span class="c1">// root + one collection</span>
+<a name="line-441"></a>
+<a name="line-442"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allPAlbums</span><span class="p">().</span><span class="n">size</span><span class="p">(),</span> <span class="mi">2</span><span class="p">);</span>
+<a name="line-443"></a>
+<a name="line-444"></a> <span class="c1">// remove all tags</span>
<a name="line-445"></a>
-<a name="line-446"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">photo</span><span class="p">.</span><span class="n">m_apiEditUrl</span><span class="p">);</span>
-<a name="line-447"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
-<a name="line-448"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span>
-<a name="line-449"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/atom+xml; charset=utf-8; type=entry&quot;</span><span class="p">));</span>
-<a name="line-450"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span>
-<a name="line-451"></a> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;FimpToken realm=</span><span class="se">\&quot;</span><span class="s">%1</span><span class="se">\&quot;</span><span class="s">, token=</span><span class="se">\&quot;</span><span class="s">%2</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">)</span>
-<a name="line-452"></a> <span class="p">.</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">AUTH_REALM</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">token</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">());</span>
-<a name="line-453"></a>
-<a name="line-454"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">put</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">buffer</span><span class="p">);</span>
-<a name="line-455"></a>
-<a name="line-456"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-457"></a><span class="p">}</span>
+<a name="line-446"></a> <span class="n">QString</span> <span class="n">error</span><span class="p">;</span>
+<a name="line-447"></a> <span class="kt">bool</span> <span class="n">removed</span> <span class="o">=</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">deleteTAlbum</span><span class="p">(</span><span class="n">talbumRoot0</span><span class="p">,</span> <span class="n">error</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
+<a name="line-448"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="n">removed</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;Error removing a tag: %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">error</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-449"></a> <span class="n">removed</span> <span class="o">=</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">deleteTAlbum</span><span class="p">(</span><span class="n">talbumRoot1</span><span class="p">,</span> <span class="n">error</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
+<a name="line-450"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="n">removed</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;Error removing a tag: %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">error</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-451"></a>
+<a name="line-452"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allTAlbums</span><span class="p">().</span><span class="n">size</span><span class="p">(),</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-453"></a><span class="p">}</span>
+<a name="line-454"></a>
+<a name="line-455"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">testPAlbumModel</span><span class="p">()</span>
+<a name="line-456"></a><span class="p">{</span>
+<a name="line-457"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start AlbumModelTest::testPAlbumModel()&quot;</span><span class="p">;</span>
<a name="line-458"></a>
-<a name="line-459"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">updateAlbum</span><span class="p">(</span><span class="n">YandexFotkiAlbum</span><span class="o">&amp;</span> <span class="n">album</span><span class="p">)</span>
-<a name="line-460"></a><span class="p">{</span>
-<a name="line-461"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isErrorState</span><span class="p">()</span> <span class="o">||</span> <span class="o">!</span><span class="n">isAuthenticated</span><span class="p">())</span>
-<a name="line-462"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-459"></a> <span class="n">AlbumModel</span><span class="o">*</span> <span class="n">albumModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AlbumModel</span><span class="p">();</span>
+<a name="line-460"></a> <span class="n">ModelTest</span><span class="o">*</span> <span class="n">test</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModelTest</span><span class="p">(</span><span class="n">albumModel</span><span class="p">,</span> <span class="k">nullptr</span><span class="p">);</span>
+<a name="line-461"></a> <span class="k">delete</span> <span class="n">test</span><span class="p">;</span>
+<a name="line-462"></a> <span class="k">delete</span> <span class="n">albumModel</span><span class="p">;</span>
<a name="line-463"></a>
-<a name="line-464"></a> <span class="k">if</span> <span class="p">(</span><span class="n">album</span><span class="p">.</span><span class="n">urn</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-465"></a> <span class="p">{</span>
-<a name="line-466"></a> <span class="c1">// new album</span>
-<a name="line-467"></a> <span class="k">return</span> <span class="n">updateAlbumCreate</span><span class="p">(</span><span class="n">album</span><span class="p">);</span>
-<a name="line-468"></a> <span class="p">}</span>
-<a name="line-469"></a> <span class="k">else</span>
-<a name="line-470"></a> <span class="p">{</span>
-<a name="line-471"></a> <span class="n">qCCritical</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Updating albums is not yet supported&quot;</span><span class="p">;</span>
-<a name="line-472"></a> <span class="p">}</span>
-<a name="line-473"></a><span class="p">}</span>
-<a name="line-474"></a>
-<a name="line-475"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">updateAlbumCreate</span><span class="p">(</span><span class="n">YandexFotkiAlbum</span><span class="o">&amp;</span> <span class="n">album</span><span class="p">)</span>
-<a name="line-476"></a><span class="p">{</span>
-<a name="line-477"></a> <span class="n">QDomDocument</span> <span class="n">doc</span><span class="p">;</span>
-<a name="line-478"></a> <span class="n">QDomProcessingInstruction</span> <span class="n">instr</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createProcessingInstruction</span><span class="p">(</span>
-<a name="line-479"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;xml&quot;</span><span class="p">),</span>
-<a name="line-480"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;version=&#39;1.0&#39; encoding=&#39;UTF-8&#39;&quot;</span><span class="p">));</span>
-<a name="line-481"></a>
-<a name="line-482"></a> <span class="n">doc</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">instr</span><span class="p">);</span>
-<a name="line-483"></a> <span class="n">QDomElement</span> <span class="n">entryElem</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;entry&quot;</span><span class="p">));</span>
-<a name="line-484"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;xmlns&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;http://www.w3.org/2005/Atom&quot;</span><span class="p">));</span>
-<a name="line-485"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;xmlns:f&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yandex:fotki&quot;</span><span class="p">));</span>
-<a name="line-486"></a> <span class="n">doc</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">entryElem</span><span class="p">);</span>
-<a name="line-487"></a>
-<a name="line-488"></a> <span class="n">QDomElement</span> <span class="n">title</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;title&quot;</span><span class="p">));</span>
-<a name="line-489"></a> <span class="n">title</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">doc</span><span class="p">.</span><span class="n">createTextNode</span><span class="p">(</span><span class="n">album</span><span class="p">.</span><span class="n">title</span><span class="p">()));</span>
-<a name="line-490"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">title</span><span class="p">);</span>
-<a name="line-491"></a>
-<a name="line-492"></a> <span class="n">QDomElement</span> <span class="n">summary</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;summary&quot;</span><span class="p">));</span>
-<a name="line-493"></a> <span class="n">summary</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">doc</span><span class="p">.</span><span class="n">createTextNode</span><span class="p">(</span><span class="n">album</span><span class="p">.</span><span class="n">summary</span><span class="p">()));</span>
-<a name="line-494"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">summary</span><span class="p">);</span>
-<a name="line-495"></a>
-<a name="line-496"></a> <span class="n">QDomElement</span> <span class="n">password</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">createElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;f:password&quot;</span><span class="p">));</span>
-<a name="line-497"></a> <span class="n">password</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">doc</span><span class="p">.</span><span class="n">createTextNode</span><span class="p">(</span><span class="n">album</span><span class="p">.</span><span class="n">m_password</span><span class="p">));</span>
-<a name="line-498"></a> <span class="n">entryElem</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">password</span><span class="p">);</span>
-<a name="line-499"></a>
-<a name="line-500"></a> <span class="k">const</span> <span class="n">QByteArray</span> <span class="n">postData</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">toString</span><span class="p">(</span><span class="mi">1</span><span class="p">).</span><span class="n">toUtf8</span><span class="p">();</span> <span class="c1">// with idents</span>
-<a name="line-501"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Prepared data: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">postData</span><span class="p">;</span>
-<a name="line-502"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Url&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">apiAlbumsUrl</span><span class="p">;</span>
-<a name="line-503"></a>
-<a name="line-504"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_UPDATEALBUM</span><span class="p">;</span>
+<a name="line-464"></a> <span class="n">albumModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AlbumModel</span><span class="p">(</span><span class="n">AbstractAlbumModel</span><span class="o">::</span><span class="n">IgnoreRootAlbum</span><span class="p">);</span>
+<a name="line-465"></a> <span class="n">test</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModelTest</span><span class="p">(</span><span class="n">albumModel</span><span class="p">,</span> <span class="k">nullptr</span><span class="p">);</span>
+<a name="line-466"></a> <span class="k">delete</span> <span class="n">test</span><span class="p">;</span>
+<a name="line-467"></a> <span class="k">delete</span> <span class="n">albumModel</span><span class="p">;</span>
+<a name="line-468"></a><span class="p">}</span>
+<a name="line-469"></a>
+<a name="line-470"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">testDisablePAlbumCount</span><span class="p">()</span>
+<a name="line-471"></a><span class="p">{</span>
+<a name="line-472"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start AlbumModelTest::testDisablePAlbumCount()&quot;</span><span class="p">;</span>
+<a name="line-473"></a>
+<a name="line-474"></a> <span class="n">AlbumModel</span> <span class="n">albumModel</span><span class="p">;</span>
+<a name="line-475"></a> <span class="n">albumModel</span><span class="p">.</span><span class="n">setCountMap</span><span class="p">(</span><span class="n">palbumCountMap</span><span class="p">);</span>
+<a name="line-476"></a> <span class="n">albumModel</span><span class="p">.</span><span class="n">setShowCount</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-477"></a>
+<a name="line-478"></a> <span class="n">QRegExp</span> <span class="nf">countRegEx</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;.+ </span><span class="se">\\</span><span class="s">(</span><span class="se">\\</span><span class="s">d+</span><span class="se">\\</span><span class="s">)&quot;))</span><span class="p">;</span>
+<a name="line-479"></a> <span class="n">countRegEx</span><span class="p">.</span><span class="n">setMinimal</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-480"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;test (10)&quot;</span><span class="p">)));</span>
+<a name="line-481"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;te st (10)&quot;</span><span class="p">)));</span>
+<a name="line-482"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;te st (0)&quot;</span><span class="p">)));</span>
+<a name="line-483"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="o">!</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;te st ()&quot;</span><span class="p">)));</span>
+<a name="line-484"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="o">!</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;te st&quot;</span><span class="p">)));</span>
+<a name="line-485"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="o">!</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;te st (10) bla&quot;</span><span class="p">)));</span>
+<a name="line-486"></a>
+<a name="line-487"></a> <span class="c1">// ensure that all albums except the root album have a count attached</span>
+<a name="line-488"></a>
+<a name="line-489"></a> <span class="n">QModelIndex</span> <span class="n">rootIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">index</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">QModelIndex</span><span class="p">());</span>
+<a name="line-490"></a> <span class="n">QString</span> <span class="n">rootTitle</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">data</span><span class="p">(</span><span class="n">rootIndex</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">();</span>
+<a name="line-491"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="o">!</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">rootTitle</span><span class="p">));</span>
+<a name="line-492"></a>
+<a name="line-493"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">collectionRow</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">collectionRow</span> <span class="o">&lt;</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">rowCount</span><span class="p">(</span><span class="n">rootIndex</span><span class="p">);</span> <span class="o">++</span><span class="n">collectionRow</span><span class="p">)</span>
+<a name="line-494"></a> <span class="p">{</span>
+<a name="line-495"></a> <span class="n">QModelIndex</span> <span class="n">collectionIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">index</span><span class="p">(</span><span class="n">collectionRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">rootIndex</span><span class="p">);</span>
+<a name="line-496"></a> <span class="n">QString</span> <span class="n">collectionTitle</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">data</span><span class="p">(</span><span class="n">collectionIndex</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">();</span>
+<a name="line-497"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">collectionTitle</span><span class="p">),</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1 matching error&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">collectionTitle</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-498"></a>
+<a name="line-499"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">albumRow</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">albumRow</span> <span class="o">&lt;</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">rowCount</span><span class="p">(</span><span class="n">collectionIndex</span><span class="p">);</span> <span class="o">++</span><span class="n">albumRow</span><span class="p">)</span>
+<a name="line-500"></a> <span class="p">{</span>
+<a name="line-501"></a> <span class="n">QModelIndex</span> <span class="n">albumIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">index</span><span class="p">(</span><span class="n">albumRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">collectionIndex</span><span class="p">);</span>
+<a name="line-502"></a> <span class="n">QString</span> <span class="n">albumTitle</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">data</span><span class="p">(</span><span class="n">albumIndex</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">();</span>
+<a name="line-503"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">albumTitle</span><span class="p">),</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1 matching error&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">albumTitle</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-504"></a> <span class="p">}</span>
<a name="line-505"></a>
-<a name="line-506"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">apiAlbumsUrl</span><span class="p">);</span>
-<a name="line-507"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
-<a name="line-508"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/atom+xml; charset=utf-8; type=entry&quot;</span><span class="p">));</span>
-<a name="line-509"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;FimpToken realm=</span><span class="se">\&quot;</span><span class="s">%1</span><span class="se">\&quot;</span><span class="s">, token=</span><span class="se">\&quot;</span><span class="s">%2</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">)</span>
-<a name="line-510"></a> <span class="p">.</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">AUTH_REALM</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">token</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">());</span>
+<a name="line-506"></a> <span class="p">}</span>
+<a name="line-507"></a>
+<a name="line-508"></a> <span class="c1">// now disable showing the count</span>
+<a name="line-509"></a>
+<a name="line-510"></a> <span class="n">albumModel</span><span class="p">.</span><span class="n">setShowCount</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-511"></a>
-<a name="line-512"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">postData</span><span class="p">);</span>
+<a name="line-512"></a> <span class="c1">// ensure that no album has a count attached</span>
<a name="line-513"></a>
-<a name="line-514"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-515"></a><span class="p">}</span>
+<a name="line-514"></a> <span class="n">rootTitle</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">data</span><span class="p">(</span><span class="n">rootIndex</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">();</span>
+<a name="line-515"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="o">!</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">rootTitle</span><span class="p">));</span>
<a name="line-516"></a>
-<a name="line-517"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">reset</span><span class="p">()</span>
-<a name="line-518"></a><span class="p">{</span>
-<a name="line-519"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
-<a name="line-520"></a> <span class="p">{</span>
-<a name="line-521"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">abort</span><span class="p">();</span>
-<a name="line-522"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-523"></a> <span class="p">}</span>
-<a name="line-524"></a>
-<a name="line-525"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">token</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
-<a name="line-526"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_UNAUTHENTICATED</span><span class="p">;</span>
-<a name="line-527"></a><span class="p">}</span>
-<a name="line-528"></a>
-<a name="line-529"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">cancel</span><span class="p">()</span>
-<a name="line-530"></a><span class="p">{</span>
-<a name="line-531"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
-<a name="line-532"></a> <span class="p">{</span>
-<a name="line-533"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">abort</span><span class="p">();</span>
-<a name="line-534"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-535"></a> <span class="p">}</span>
-<a name="line-536"></a>
-<a name="line-537"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isAuthenticated</span><span class="p">())</span>
-<a name="line-538"></a> <span class="p">{</span>
-<a name="line-539"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_AUTHENTICATED</span><span class="p">;</span>
-<a name="line-540"></a> <span class="p">}</span>
-<a name="line-541"></a> <span class="k">else</span>
-<a name="line-542"></a> <span class="p">{</span>
-<a name="line-543"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">token</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
-<a name="line-544"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_UNAUTHENTICATED</span><span class="p">;</span>
-<a name="line-545"></a> <span class="p">}</span>
-<a name="line-546"></a><span class="p">}</span>
-<a name="line-547"></a>
-<a name="line-548"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">setErrorState</span><span class="p">(</span><span class="n">State</span> <span class="n">state</span><span class="p">)</span>
-<a name="line-549"></a><span class="p">{</span>
-<a name="line-550"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">state</span><span class="p">;</span>
-<a name="line-551"></a> <span class="n">emit</span> <span class="nf">signalError</span><span class="p">();</span>
-<a name="line-552"></a><span class="p">}</span>
-<a name="line-553"></a>
-<a name="line-554"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">slotFinished</span><span class="p">(</span><span class="n">QNetworkReply</span><span class="o">*</span> <span class="n">reply</span><span class="p">)</span>
-<a name="line-555"></a><span class="p">{</span>
-<a name="line-556"></a> <span class="k">if</span> <span class="p">(</span><span class="n">reply</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
-<a name="line-557"></a> <span class="p">{</span>
-<a name="line-558"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-559"></a> <span class="p">}</span>
+<a name="line-517"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">collectionRow</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">collectionRow</span> <span class="o">&lt;</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">rowCount</span><span class="p">(</span><span class="n">rootIndex</span><span class="p">);</span> <span class="o">++</span><span class="n">collectionRow</span><span class="p">)</span>
+<a name="line-518"></a> <span class="p">{</span>
+<a name="line-519"></a> <span class="n">QModelIndex</span> <span class="n">collectionIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">index</span><span class="p">(</span><span class="n">collectionRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">rootIndex</span><span class="p">);</span>
+<a name="line-520"></a> <span class="n">QString</span> <span class="n">collectionTitle</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">data</span><span class="p">(</span><span class="n">collectionIndex</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">();</span>
+<a name="line-521"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="o">!</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">collectionTitle</span><span class="p">),</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1 matching error&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">collectionTitle</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-522"></a>
+<a name="line-523"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">albumRow</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">albumRow</span> <span class="o">&lt;</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">rowCount</span><span class="p">(</span><span class="n">collectionIndex</span><span class="p">);</span> <span class="o">++</span><span class="n">albumRow</span><span class="p">)</span>
+<a name="line-524"></a> <span class="p">{</span>
+<a name="line-525"></a> <span class="n">QModelIndex</span> <span class="n">albumIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">index</span><span class="p">(</span><span class="n">albumRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">collectionIndex</span><span class="p">);</span>
+<a name="line-526"></a> <span class="n">QString</span> <span class="n">albumTitle</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">data</span><span class="p">(</span><span class="n">albumIndex</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">();</span>
+<a name="line-527"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="o">!</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">albumTitle</span><span class="p">),</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1 matching error&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">albumTitle</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-528"></a> <span class="p">}</span>
+<a name="line-529"></a> <span class="p">}</span>
+<a name="line-530"></a><span class="p">}</span>
+<a name="line-531"></a>
+<a name="line-532"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">testDAlbumModel</span><span class="p">()</span>
+<a name="line-533"></a><span class="p">{</span>
+<a name="line-534"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start AlbumModelTest::testDAlbumModel()&quot;</span><span class="p">;</span>
+<a name="line-535"></a>
+<a name="line-536"></a> <span class="n">DateAlbumModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">albumModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DateAlbumModel</span><span class="p">();</span>
+<a name="line-537"></a> <span class="n">ensureItemCounts</span><span class="p">();</span>
+<a name="line-538"></a> <span class="n">ModelTest</span><span class="o">*</span> <span class="k">const</span> <span class="n">test</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModelTest</span><span class="p">(</span><span class="n">albumModel</span><span class="p">,</span> <span class="k">nullptr</span><span class="p">);</span>
+<a name="line-539"></a> <span class="k">delete</span> <span class="n">test</span><span class="p">;</span>
+<a name="line-540"></a> <span class="k">delete</span> <span class="n">albumModel</span><span class="p">;</span>
+<a name="line-541"></a><span class="p">}</span>
+<a name="line-542"></a>
+<a name="line-543"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">testDAlbumContainsAlbums</span><span class="p">()</span>
+<a name="line-544"></a><span class="p">{</span>
+<a name="line-545"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start AlbumModelTest::testDAlbumContainsAlbums()&quot;</span><span class="p">;</span>
+<a name="line-546"></a>
+<a name="line-547"></a> <span class="n">DateAlbumModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">albumModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DateAlbumModel</span><span class="p">();</span>
+<a name="line-548"></a> <span class="n">ensureItemCounts</span><span class="p">();</span>
+<a name="line-549"></a>
+<a name="line-550"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rootAlbum</span><span class="p">());</span>
+<a name="line-551"></a>
+<a name="line-552"></a> <span class="n">foreach</span> <span class="p">(</span><span class="n">Album</span><span class="o">*</span> <span class="k">const</span> <span class="n">album</span><span class="p">,</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allDAlbums</span><span class="p">())</span>
+<a name="line-553"></a> <span class="p">{</span>
+<a name="line-554"></a> <span class="n">DAlbum</span><span class="o">*</span> <span class="k">const</span> <span class="n">dAlbum</span> <span class="o">=</span> <span class="k">dynamic_cast</span><span class="o">&lt;</span><span class="n">DAlbum</span><span class="o">*&gt;</span> <span class="p">(</span><span class="n">album</span><span class="p">);</span>
+<a name="line-555"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">dAlbum</span><span class="p">);</span>
+<a name="line-556"></a>
+<a name="line-557"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;checking album for date &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;, range = &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">range</span><span class="p">();</span>
+<a name="line-558"></a>
+<a name="line-559"></a> <span class="n">QModelIndex</span> <span class="n">index</span> <span class="o">=</span> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">indexForAlbum</span><span class="p">(</span><span class="n">dAlbum</span><span class="p">);</span>
<a name="line-560"></a>
-<a name="line-561"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-562"></a>
-<a name="line-563"></a> <span class="k">if</span> <span class="p">(</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">error</span><span class="p">()</span> <span class="o">!=</span> <span class="n">QNetworkReply</span><span class="o">::</span><span class="n">NoError</span><span class="p">)</span>
-<a name="line-564"></a> <span class="p">{</span>
-<a name="line-565"></a> <span class="kt">int</span> <span class="n">code</span> <span class="o">=</span> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">attribute</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">HttpStatusCodeAttribute</span><span class="p">).</span><span class="n">toInt</span><span class="p">();</span>
-<a name="line-566"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Transfer Error&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">code</span> <span class="o">&lt;&lt;</span> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">errorString</span><span class="p">();</span>
-<a name="line-567"></a>
-<a name="line-568"></a> <span class="k">if</span> <span class="p">(</span><span class="n">code</span> <span class="o">==</span> <span class="mi">401</span> <span class="o">||</span> <span class="n">code</span> <span class="o">==</span> <span class="mi">403</span> <span class="o">||</span> <span class="n">code</span> <span class="o">==</span> <span class="mi">404</span><span class="p">)</span> <span class="c1">// auth required, 404 user not found</span>
-<a name="line-569"></a> <span class="p">{</span>
-<a name="line-570"></a> <span class="n">setErrorState</span><span class="p">(</span><span class="n">STATE_INVALID_CREDENTIALS</span><span class="p">);</span>
-<a name="line-571"></a> <span class="p">}</span>
-<a name="line-572"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">==</span> <span class="n">STATE_GETSERVICE</span><span class="p">)</span>
-<a name="line-573"></a> <span class="p">{</span>
-<a name="line-574"></a> <span class="n">setErrorState</span><span class="p">(</span><span class="n">STATE_GETSERVICE_ERROR</span><span class="p">);</span>
-<a name="line-575"></a> <span class="p">}</span>
-<a name="line-576"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">==</span> <span class="n">STATE_GETSESSION</span><span class="p">)</span>
-<a name="line-577"></a> <span class="p">{</span>
-<a name="line-578"></a> <span class="n">setErrorState</span><span class="p">(</span><span class="n">STATE_GETSESSION_ERROR</span><span class="p">);</span>
-<a name="line-579"></a> <span class="p">}</span>
-<a name="line-580"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">==</span> <span class="n">STATE_GETTOKEN</span><span class="p">)</span>
-<a name="line-581"></a> <span class="p">{</span>
-<a name="line-582"></a> <span class="n">setErrorState</span><span class="p">(</span><span class="n">STATE_GETTOKEN_ERROR</span><span class="p">);</span>
-<a name="line-583"></a> <span class="p">}</span>
-<a name="line-584"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">==</span> <span class="n">STATE_LISTALBUMS</span><span class="p">)</span>
-<a name="line-585"></a> <span class="p">{</span>
-<a name="line-586"></a> <span class="n">setErrorState</span><span class="p">(</span><span class="n">STATE_LISTALBUMS_ERROR</span><span class="p">);</span>
-<a name="line-587"></a> <span class="p">}</span>
-<a name="line-588"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">==</span> <span class="n">STATE_LISTPHOTOS</span><span class="p">)</span>
-<a name="line-589"></a> <span class="p">{</span>
-<a name="line-590"></a> <span class="n">setErrorState</span><span class="p">(</span><span class="n">STATE_LISTPHOTOS_ERROR</span><span class="p">);</span>
-<a name="line-591"></a> <span class="p">}</span>
-<a name="line-592"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">==</span> <span class="n">STATE_UPDATEPHOTO_FILE</span><span class="p">)</span>
-<a name="line-593"></a> <span class="p">{</span>
-<a name="line-594"></a> <span class="n">setErrorState</span><span class="p">(</span><span class="n">STATE_UPDATEPHOTO_FILE_ERROR</span><span class="p">);</span>
-<a name="line-595"></a> <span class="p">}</span>
-<a name="line-596"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">==</span> <span class="n">STATE_UPDATEPHOTO_INFO</span><span class="p">)</span>
-<a name="line-597"></a> <span class="p">{</span>
-<a name="line-598"></a> <span class="n">setErrorState</span><span class="p">(</span><span class="n">STATE_UPDATEPHOTO_INFO_ERROR</span><span class="p">);</span>
-<a name="line-599"></a> <span class="p">}</span>
-<a name="line-600"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">==</span> <span class="n">STATE_UPDATEALBUM</span><span class="p">)</span>
-<a name="line-601"></a> <span class="p">{</span>
-<a name="line-602"></a> <span class="n">setErrorState</span><span class="p">(</span><span class="n">STATE_UPDATEALBUM_ERROR</span><span class="p">);</span>
-<a name="line-603"></a> <span class="p">}</span>
-<a name="line-604"></a>
-<a name="line-605"></a> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">deleteLater</span><span class="p">();</span>
-<a name="line-606"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-607"></a> <span class="p">}</span>
-<a name="line-608"></a>
-<a name="line-609"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">readAll</span><span class="p">());</span>
-<a name="line-610"></a>
-<a name="line-611"></a> <span class="k">switch</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span><span class="p">)</span>
-<a name="line-612"></a> <span class="p">{</span>
-<a name="line-613"></a> <span class="k">case</span> <span class="p">(</span><span class="n">STATE_GETSERVICE</span><span class="p">)</span><span class="o">:</span>
-<a name="line-614"></a> <span class="n">slotParseResponseGetService</span><span class="p">();</span>
-<a name="line-615"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-616"></a> <span class="k">case</span> <span class="p">(</span><span class="n">STATE_GETSESSION</span><span class="p">)</span><span class="o">:</span>
-<a name="line-617"></a> <span class="n">slotParseResponseGetSession</span><span class="p">();</span>
-<a name="line-618"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-619"></a> <span class="k">case</span> <span class="p">(</span><span class="n">STATE_GETTOKEN</span><span class="p">)</span><span class="o">:</span>
-<a name="line-620"></a> <span class="n">slotParseResponseGetToken</span><span class="p">();</span>
-<a name="line-621"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-622"></a> <span class="k">case</span> <span class="p">(</span><span class="n">STATE_LISTALBUMS</span><span class="p">)</span><span class="o">:</span>
-<a name="line-623"></a> <span class="n">slotParseResponseListAlbums</span><span class="p">();</span>
-<a name="line-624"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-625"></a> <span class="k">case</span> <span class="p">(</span><span class="n">STATE_LISTPHOTOS</span><span class="p">)</span><span class="o">:</span>
-<a name="line-626"></a> <span class="n">slotParseResponseListPhotos</span><span class="p">();</span>
-<a name="line-627"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-628"></a> <span class="k">case</span> <span class="p">(</span><span class="n">STATE_UPDATEPHOTO_FILE</span><span class="p">)</span><span class="o">:</span>
-<a name="line-629"></a> <span class="n">slotParseResponseUpdatePhotoFile</span><span class="p">();</span>
-<a name="line-630"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-631"></a> <span class="k">case</span> <span class="p">(</span><span class="n">STATE_UPDATEPHOTO_INFO</span><span class="p">)</span><span class="o">:</span>
-<a name="line-632"></a> <span class="n">slotParseResponseUpdatePhotoInfo</span><span class="p">();</span>
-<a name="line-633"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-634"></a> <span class="k">case</span> <span class="p">(</span><span class="n">STATE_UPDATEALBUM</span><span class="p">)</span><span class="o">:</span>
-<a name="line-635"></a> <span class="n">slotParseResponseUpdateAlbum</span><span class="p">();</span>
-<a name="line-636"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-637"></a> <span class="k">default</span><span class="o">:</span>
-<a name="line-638"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-639"></a> <span class="p">}</span>
-<a name="line-640"></a>
-<a name="line-641"></a> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">deleteLater</span><span class="p">();</span>
-<a name="line-642"></a><span class="p">}</span>
-<a name="line-643"></a>
-<a name="line-644"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">slotParseResponseGetService</span><span class="p">()</span>
-<a name="line-645"></a><span class="p">{</span>
-<a name="line-646"></a> <span class="n">QDomDocument</span> <span class="n">doc</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;service&quot;</span><span class="p">));</span>
-<a name="line-647"></a>
-<a name="line-648"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">doc</span><span class="p">.</span><span class="n">setContent</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">))</span>
-<a name="line-649"></a> <span class="p">{</span>
-<a name="line-650"></a> <span class="n">qCCritical</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid XML: parse error&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">;</span>
-<a name="line-651"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_GETSERVICE_ERROR</span><span class="p">);</span>
-<a name="line-652"></a> <span class="p">}</span>
-<a name="line-653"></a>
-<a name="line-654"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">rootElem</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">documentElement</span><span class="p">();</span>
+<a name="line-561"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">isRoot</span><span class="p">())</span>
+<a name="line-562"></a> <span class="p">{</span>
+<a name="line-563"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">index</span><span class="p">.</span><span class="n">isValid</span><span class="p">());</span>
+<a name="line-564"></a> <span class="p">}</span>
+<a name="line-565"></a>
+<a name="line-566"></a> <span class="k">if</span> <span class="p">(</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">isRoot</span><span class="p">())</span>
+<a name="line-567"></a> <span class="p">{</span>
+<a name="line-568"></a> <span class="c1">// root album</span>
+<a name="line-569"></a>
+<a name="line-570"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">isRoot</span><span class="p">());</span>
+<a name="line-571"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">index</span><span class="p">),</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-572"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rootAlbumIndex</span><span class="p">());</span>
+<a name="line-573"></a> <span class="p">}</span>
+<a name="line-574"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">range</span><span class="p">()</span> <span class="o">==</span> <span class="n">DAlbum</span><span class="o">::</span><span class="n">Year</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2007</span><span class="p">)</span>
+<a name="line-575"></a> <span class="p">{</span>
+<a name="line-576"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">index</span><span class="p">),</span> <span class="mi">2</span><span class="p">);</span>
+<a name="line-577"></a> <span class="p">}</span>
+<a name="line-578"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">range</span><span class="p">()</span> <span class="o">==</span> <span class="n">DAlbum</span><span class="o">::</span><span class="n">Year</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2009</span><span class="p">)</span>
+<a name="line-579"></a> <span class="p">{</span>
+<a name="line-580"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">index</span><span class="p">),</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-581"></a> <span class="p">}</span>
+<a name="line-582"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">range</span><span class="p">()</span> <span class="o">==</span> <span class="n">DAlbum</span><span class="o">::</span><span class="n">Month</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2007</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span>
+<a name="line-583"></a> <span class="p">{</span>
+<a name="line-584"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">index</span><span class="p">),</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-585"></a> <span class="p">}</span>
+<a name="line-586"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">range</span><span class="p">()</span> <span class="o">==</span> <span class="n">DAlbum</span><span class="o">::</span><span class="n">Month</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2007</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">==</span> <span class="mi">4</span><span class="p">)</span>
+<a name="line-587"></a> <span class="p">{</span>
+<a name="line-588"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">index</span><span class="p">),</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-589"></a> <span class="p">}</span>
+<a name="line-590"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">range</span><span class="p">()</span> <span class="o">==</span> <span class="n">DAlbum</span><span class="o">::</span><span class="n">Month</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2009</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span>
+<a name="line-591"></a> <span class="p">{</span>
+<a name="line-592"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">index</span><span class="p">),</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-593"></a> <span class="p">}</span>
+<a name="line-594"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">range</span><span class="p">()</span> <span class="o">==</span> <span class="n">DAlbum</span><span class="o">::</span><span class="n">Month</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2009</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">==</span> <span class="mi">4</span><span class="p">)</span>
+<a name="line-595"></a> <span class="p">{</span>
+<a name="line-596"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">index</span><span class="p">),</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-597"></a> <span class="p">}</span>
+<a name="line-598"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">range</span><span class="p">()</span> <span class="o">==</span> <span class="n">DAlbum</span><span class="o">::</span><span class="n">Month</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2009</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">==</span> <span class="mi">5</span><span class="p">)</span>
+<a name="line-599"></a> <span class="p">{</span>
+<a name="line-600"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">index</span><span class="p">),</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-601"></a> <span class="p">}</span>
+<a name="line-602"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">1997</span><span class="p">)</span>
+<a name="line-603"></a> <span class="p">{</span>
+<a name="line-604"></a> <span class="c1">// Ignore these albums for order testing</span>
+<a name="line-605"></a> <span class="p">}</span>
+<a name="line-606"></a> <span class="k">else</span>
+<a name="line-607"></a> <span class="p">{</span>
+<a name="line-608"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Unexpected album: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">title</span><span class="p">();</span>
+<a name="line-609"></a> <span class="n">QFAIL</span><span class="p">(</span><span class="s">&quot;Unexpected album returned from model&quot;</span><span class="p">);</span>
+<a name="line-610"></a> <span class="p">}</span>
+<a name="line-611"></a> <span class="p">}</span>
+<a name="line-612"></a>
+<a name="line-613"></a> <span class="k">delete</span> <span class="n">albumModel</span><span class="p">;</span>
+<a name="line-614"></a><span class="p">}</span>
+<a name="line-615"></a>
+<a name="line-616"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">testDAlbumSorting</span><span class="p">()</span>
+<a name="line-617"></a><span class="p">{</span>
+<a name="line-618"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start AlbumModelTest::testDAlbumSorting()&quot;</span><span class="p">;</span>
+<a name="line-619"></a>
+<a name="line-620"></a> <span class="n">DateAlbumModel</span> <span class="n">dateAlbumModel</span><span class="p">;</span>
+<a name="line-621"></a> <span class="n">AlbumFilterModel</span> <span class="n">albumModel</span><span class="p">;</span>
+<a name="line-622"></a> <span class="n">albumModel</span><span class="p">.</span><span class="n">setSourceAlbumModel</span><span class="p">(</span><span class="o">&amp;</span><span class="n">dateAlbumModel</span><span class="p">);</span>
+<a name="line-623"></a>
+<a name="line-624"></a> <span class="c1">// first check ascending order</span>
+<a name="line-625"></a>
+<a name="line-626"></a> <span class="n">albumModel</span><span class="p">.</span><span class="n">sort</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AscendingOrder</span><span class="p">);</span>
+<a name="line-627"></a> <span class="kt">int</span> <span class="n">previousYear</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-628"></a>
+<a name="line-629"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">yearRow</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">yearRow</span> <span class="o">&lt;</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">rowCount</span><span class="p">();</span> <span class="o">++</span><span class="n">yearRow</span><span class="p">)</span>
+<a name="line-630"></a> <span class="p">{</span>
+<a name="line-631"></a> <span class="n">QModelIndex</span> <span class="n">yearIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">index</span><span class="p">(</span><span class="n">yearRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-632"></a> <span class="n">DAlbum</span><span class="o">*</span> <span class="k">const</span> <span class="n">yearAlbum</span> <span class="o">=</span> <span class="k">dynamic_cast</span><span class="o">&lt;</span><span class="n">DAlbum</span><span class="o">*&gt;</span> <span class="p">(</span><span class="n">albumModel</span><span class="p">.</span><span class="n">albumForIndex</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">));</span>
+<a name="line-633"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">yearAlbum</span><span class="p">);</span>
+<a name="line-634"></a>
+<a name="line-635"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">yearAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">previousYear</span><span class="p">);</span>
+<a name="line-636"></a> <span class="n">previousYear</span> <span class="o">=</span> <span class="n">yearAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">();</span>
+<a name="line-637"></a>
+<a name="line-638"></a> <span class="kt">int</span> <span class="n">previousMonth</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-639"></a>
+<a name="line-640"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">monthRow</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">monthRow</span> <span class="o">&lt;</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">rowCount</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">);</span> <span class="o">++</span><span class="n">monthRow</span><span class="p">)</span>
+<a name="line-641"></a> <span class="p">{</span>
+<a name="line-642"></a> <span class="n">QModelIndex</span> <span class="n">monthIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">index</span><span class="p">(</span><span class="n">monthRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">yearIndex</span><span class="p">);</span>
+<a name="line-643"></a> <span class="n">DAlbum</span><span class="o">*</span> <span class="k">const</span> <span class="n">monthAlbum</span> <span class="o">=</span> <span class="k">dynamic_cast</span><span class="o">&lt;</span><span class="n">DAlbum</span><span class="o">*&gt;</span> <span class="p">(</span><span class="n">albumModel</span><span class="p">.</span><span class="n">albumForIndex</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">));</span>
+<a name="line-644"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthAlbum</span><span class="p">);</span>
+<a name="line-645"></a>
+<a name="line-646"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">previousMonth</span><span class="p">);</span>
+<a name="line-647"></a> <span class="n">previousMonth</span> <span class="o">=</span> <span class="n">monthAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">();</span>
+<a name="line-648"></a> <span class="p">}</span>
+<a name="line-649"></a> <span class="p">}</span>
+<a name="line-650"></a>
+<a name="line-651"></a> <span class="c1">// then check descending order</span>
+<a name="line-652"></a>
+<a name="line-653"></a> <span class="n">albumModel</span><span class="p">.</span><span class="n">sort</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DescendingOrder</span><span class="p">);</span>
+<a name="line-654"></a> <span class="n">previousYear</span> <span class="o">=</span> <span class="mi">1000000</span><span class="p">;</span>
<a name="line-655"></a>
-<a name="line-656"></a> <span class="n">QDomElement</span> <span class="n">workspaceElem</span> <span class="o">=</span> <span class="n">rootElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;app:workspace&quot;</span><span class="p">));</span>
-<a name="line-657"></a>
-<a name="line-658"></a> <span class="c1">// FIXME: workaround for Yandex xml namespaces bugs</span>
-<a name="line-659"></a> <span class="n">QString</span> <span class="n">prefix</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;app:&quot;</span><span class="p">);</span>
-<a name="line-660"></a>
-<a name="line-661"></a> <span class="k">if</span> <span class="p">(</span><span class="n">workspaceElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
-<a name="line-662"></a> <span class="p">{</span>
-<a name="line-663"></a> <span class="n">workspaceElem</span> <span class="o">=</span> <span class="n">rootElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;workspace&quot;</span><span class="p">));</span>
-<a name="line-664"></a> <span class="n">prefix</span> <span class="o">=</span> <span class="n">QString</span><span class="p">();</span>
-<a name="line-665"></a> <span class="n">qCCritical</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Service document without namespaces found&quot;</span><span class="p">;</span>
-<a name="line-666"></a> <span class="p">}</span>
-<a name="line-667"></a>
-<a name="line-668"></a> <span class="k">if</span> <span class="p">(</span><span class="n">workspaceElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
-<a name="line-669"></a> <span class="p">{</span>
-<a name="line-670"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid XML data: workspace element&quot;</span><span class="p">;</span>
-<a name="line-671"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_GETSERVICE_ERROR</span><span class="p">);</span>
-<a name="line-672"></a> <span class="p">}</span>
-<a name="line-673"></a>
-<a name="line-674"></a> <span class="n">QString</span> <span class="n">apiAlbumsUrl</span><span class="p">;</span>
-<a name="line-675"></a> <span class="n">QString</span> <span class="n">apiPhotosUrl</span><span class="p">;</span>
-<a name="line-676"></a> <span class="n">QString</span> <span class="n">apiTagsUrl</span><span class="p">;</span>
-<a name="line-677"></a>
-<a name="line-678"></a> <span class="n">QDomElement</span> <span class="n">collectionElem</span> <span class="o">=</span> <span class="n">workspaceElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;collection&quot;</span><span class="p">));</span>
-<a name="line-679"></a>
-<a name="line-680"></a> <span class="k">for</span> <span class="p">(</span> <span class="p">;</span> <span class="o">!</span><span class="n">collectionElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="p">;</span>
-<a name="line-681"></a> <span class="n">collectionElem</span> <span class="o">=</span> <span class="n">collectionElem</span><span class="p">.</span><span class="n">nextSiblingElement</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;collection&quot;</span><span class="p">)))</span>
-<a name="line-682"></a> <span class="p">{</span>
-<a name="line-683"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">acceptElem</span> <span class="o">=</span> <span class="n">collectionElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;accept&quot;</span><span class="p">));</span>
-<a name="line-684"></a>
-<a name="line-685"></a> <span class="k">if</span> <span class="p">(</span><span class="n">acceptElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span> <span class="c1">// invalid section, ignore</span>
-<a name="line-686"></a> <span class="p">{</span>
-<a name="line-687"></a> <span class="k">continue</span><span class="p">;</span>
-<a name="line-688"></a> <span class="p">}</span>
-<a name="line-689"></a>
-<a name="line-690"></a> <span class="c1">// FIXME: id attribute is undocumented</span>
-<a name="line-691"></a> <span class="k">if</span> <span class="p">(</span><span class="n">collectionElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;id&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;album-list&quot;</span><span class="p">))</span>
-<a name="line-692"></a> <span class="p">{</span>
-<a name="line-693"></a> <span class="n">apiAlbumsUrl</span> <span class="o">=</span> <span class="n">collectionElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">));</span>
-<a name="line-694"></a> <span class="p">}</span>
-<a name="line-695"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">collectionElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;id&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;photo-list&quot;</span><span class="p">))</span>
-<a name="line-696"></a> <span class="p">{</span>
-<a name="line-697"></a> <span class="n">apiPhotosUrl</span> <span class="o">=</span> <span class="n">collectionElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">));</span>
-<a name="line-698"></a> <span class="p">}</span>
-<a name="line-699"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">collectionElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;id&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;tag-list&quot;</span><span class="p">))</span>
+<a name="line-656"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">yearRow</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">yearRow</span> <span class="o">&lt;</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">rowCount</span><span class="p">();</span> <span class="o">++</span><span class="n">yearRow</span><span class="p">)</span>
+<a name="line-657"></a> <span class="p">{</span>
+<a name="line-658"></a> <span class="n">QModelIndex</span> <span class="n">yearIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">index</span><span class="p">(</span><span class="n">yearRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-659"></a> <span class="n">DAlbum</span><span class="o">*</span> <span class="k">const</span> <span class="n">yearAlbum</span> <span class="o">=</span> <span class="k">dynamic_cast</span><span class="o">&lt;</span><span class="n">DAlbum</span><span class="o">*&gt;</span> <span class="p">(</span><span class="n">albumModel</span><span class="p">.</span><span class="n">albumForIndex</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">));</span>
+<a name="line-660"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">yearAlbum</span><span class="p">);</span>
+<a name="line-661"></a>
+<a name="line-662"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">yearAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">previousYear</span><span class="p">);</span>
+<a name="line-663"></a> <span class="n">previousYear</span> <span class="o">=</span> <span class="n">yearAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">();</span>
+<a name="line-664"></a>
+<a name="line-665"></a> <span class="kt">int</span> <span class="n">previousMonth</span> <span class="o">=</span> <span class="mi">13</span><span class="p">;</span>
+<a name="line-666"></a>
+<a name="line-667"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">monthRow</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">monthRow</span> <span class="o">&lt;</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">rowCount</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">);</span> <span class="o">++</span><span class="n">monthRow</span><span class="p">)</span>
+<a name="line-668"></a> <span class="p">{</span>
+<a name="line-669"></a> <span class="n">QModelIndex</span> <span class="n">monthIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">index</span><span class="p">(</span><span class="n">monthRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">yearIndex</span><span class="p">);</span>
+<a name="line-670"></a> <span class="n">DAlbum</span><span class="o">*</span> <span class="k">const</span> <span class="n">monthAlbum</span> <span class="o">=</span> <span class="k">dynamic_cast</span><span class="o">&lt;</span><span class="n">DAlbum</span><span class="o">*&gt;</span> <span class="p">(</span><span class="n">albumModel</span><span class="p">.</span><span class="n">albumForIndex</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">));</span>
+<a name="line-671"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthAlbum</span><span class="p">);</span>
+<a name="line-672"></a>
+<a name="line-673"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">previousMonth</span><span class="p">);</span>
+<a name="line-674"></a> <span class="n">previousMonth</span> <span class="o">=</span> <span class="n">monthAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">();</span>
+<a name="line-675"></a> <span class="p">}</span>
+<a name="line-676"></a> <span class="p">}</span>
+<a name="line-677"></a><span class="p">}</span>
+<a name="line-678"></a>
+<a name="line-679"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">testDAlbumCount</span><span class="p">()</span>
+<a name="line-680"></a><span class="p">{</span>
+<a name="line-681"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start AlbumModelTest::testDAlbumCount()&quot;</span><span class="p">;</span>
+<a name="line-682"></a>
+<a name="line-683"></a> <span class="n">DateAlbumModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">albumModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DateAlbumModel</span><span class="p">();</span>
+<a name="line-684"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">setShowCount</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-685"></a> <span class="n">ensureItemCounts</span><span class="p">();</span>
+<a name="line-686"></a>
+<a name="line-687"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;iterating over root indices&quot;</span><span class="p">;</span>
+<a name="line-688"></a>
+<a name="line-689"></a> <span class="c1">// check year albums</span>
+<a name="line-690"></a>
+<a name="line-691"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">yearRow</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">yearRow</span> <span class="o">&lt;</span> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rootAlbumIndex</span><span class="p">());</span> <span class="o">++</span><span class="n">yearRow</span><span class="p">)</span>
+<a name="line-692"></a> <span class="p">{</span>
+<a name="line-693"></a> <span class="n">QModelIndex</span> <span class="n">yearIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">yearRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-694"></a> <span class="n">DAlbum</span><span class="o">*</span> <span class="k">const</span> <span class="n">yearDAlbum</span> <span class="o">=</span> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumForIndex</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">);</span>
+<a name="line-695"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">yearDAlbum</span><span class="p">);</span>
+<a name="line-696"></a>
+<a name="line-697"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">yearDAlbum</span><span class="o">-&gt;</span><span class="n">range</span><span class="p">()</span> <span class="o">==</span> <span class="n">DAlbum</span><span class="o">::</span><span class="n">Year</span><span class="p">);</span>
+<a name="line-698"></a>
+<a name="line-699"></a> <span class="k">if</span> <span class="p">(</span><span class="n">yearDAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2007</span><span class="p">)</span>
<a name="line-700"></a> <span class="p">{</span>
-<a name="line-701"></a> <span class="n">apiTagsUrl</span> <span class="o">=</span> <span class="n">collectionElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">));</span>
-<a name="line-702"></a> <span class="p">}</span>
-<a name="line-703"></a> <span class="c1">// else skip unknown section</span>
-<a name="line-704"></a> <span class="p">}</span>
-<a name="line-705"></a>
-<a name="line-706"></a> <span class="k">if</span> <span class="p">(</span><span class="n">apiAlbumsUrl</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">apiPhotosUrl</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
-<a name="line-707"></a> <span class="p">{</span>
-<a name="line-708"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid XML data: service URLs&quot;</span><span class="p">;</span>
-<a name="line-709"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_GETSERVICE_ERROR</span><span class="p">);</span>
-<a name="line-710"></a> <span class="p">}</span>
-<a name="line-711"></a>
-<a name="line-712"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">apiAlbumsUrl</span> <span class="o">=</span> <span class="n">apiAlbumsUrl</span><span class="p">;</span>
-<a name="line-713"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">apiPhotosUrl</span> <span class="o">=</span> <span class="n">apiPhotosUrl</span><span class="p">;</span>
-<a name="line-714"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">apiTagsUrl</span> <span class="o">=</span> <span class="n">apiTagsUrl</span><span class="p">;</span>
-<a name="line-715"></a>
-<a name="line-716"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;ServiceUrls:&quot;</span><span class="p">;</span>
-<a name="line-717"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Albums&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">apiAlbumsUrl</span><span class="p">;</span>
-<a name="line-718"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Photos&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">apiPhotosUrl</span><span class="p">;</span>
-<a name="line-719"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Tags&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">apiTagsUrl</span><span class="p">;</span>
-<a name="line-720"></a>
-<a name="line-721"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_GETSERVICE_DONE</span><span class="p">;</span>
-<a name="line-722"></a> <span class="n">emit</span> <span class="nf">signalGetServiceDone</span><span class="p">();</span>
-<a name="line-723"></a><span class="p">}</span>
-<a name="line-724"></a>
-<a name="line-725"></a><span class="cm">/*</span>
-<a name="line-726"></a><span class="cm">void YFTalker::slotParseResponseCheckToken()</span>
-<a name="line-727"></a><span class="cm">{</span>
-<a name="line-728"></a><span class="cm"> // token still valid, skip getSession and getToken</span>
-<a name="line-729"></a><span class="cm"> d-&gt;state = STATE_GETTOKEN_DONE;</span>
-<a name="line-730"></a><span class="cm"> emit signalGetTokenDone();</span>
-<a name="line-731"></a><span class="cm">}</span>
-<a name="line-732"></a><span class="cm">*/</span>
-<a name="line-733"></a>
-<a name="line-734"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">slotParseResponseGetSession</span><span class="p">()</span>
-<a name="line-735"></a><span class="p">{</span>
-<a name="line-736"></a> <span class="n">QDomDocument</span> <span class="n">doc</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;session&quot;</span><span class="p">));</span>
-<a name="line-737"></a>
-<a name="line-738"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">doc</span><span class="p">.</span><span class="n">setContent</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">))</span>
-<a name="line-739"></a> <span class="p">{</span>
-<a name="line-740"></a> <span class="k">return</span> <span class="n">setErrorState</span><span class="p">(</span><span class="n">STATE_GETSESSION_ERROR</span><span class="p">);</span>
-<a name="line-741"></a> <span class="p">}</span>
-<a name="line-742"></a>
-<a name="line-743"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">rootElem</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">documentElement</span><span class="p">();</span>
-<a name="line-744"></a>
-<a name="line-745"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">keyElem</span> <span class="o">=</span> <span class="n">rootElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;key&quot;</span><span class="p">));</span>
-<a name="line-746"></a>
-<a name="line-747"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">requestIdElem</span> <span class="o">=</span> <span class="n">rootElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;request_id&quot;</span><span class="p">));</span>
-<a name="line-748"></a>
-<a name="line-749"></a> <span class="k">if</span> <span class="p">(</span><span class="n">keyElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">keyElem</span><span class="p">.</span><span class="n">nodeType</span><span class="p">()</span> <span class="o">!=</span> <span class="n">QDomNode</span><span class="o">::</span><span class="n">ElementNode</span> <span class="o">||</span>
-<a name="line-750"></a> <span class="n">requestIdElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">requestIdElem</span><span class="p">.</span><span class="n">nodeType</span><span class="p">()</span> <span class="o">!=</span> <span class="n">QDomNode</span><span class="o">::</span><span class="n">ElementNode</span><span class="p">)</span>
-<a name="line-751"></a> <span class="p">{</span>
-<a name="line-752"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid XML&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">;</span>
-<a name="line-753"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_GETSESSION_ERROR</span><span class="p">);</span>
-<a name="line-754"></a> <span class="p">}</span>
-<a name="line-755"></a>
-<a name="line-756"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sessionKey</span> <span class="o">=</span> <span class="n">keyElem</span><span class="p">.</span><span class="n">text</span><span class="p">();</span>
-<a name="line-757"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sessionId</span> <span class="o">=</span> <span class="n">requestIdElem</span><span class="p">.</span><span class="n">text</span><span class="p">();</span>
-<a name="line-758"></a>
-<a name="line-759"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Session started&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sessionKey</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sessionId</span><span class="p">;</span>
-<a name="line-760"></a>
-<a name="line-761"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_GETSESSION_DONE</span><span class="p">;</span>
-<a name="line-762"></a> <span class="n">emit</span> <span class="nf">signalGetSessionDone</span><span class="p">();</span>
-<a name="line-763"></a><span class="p">}</span>
-<a name="line-764"></a>
-<a name="line-765"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">slotParseResponseGetToken</span><span class="p">()</span>
-<a name="line-766"></a><span class="p">{</span>
-<a name="line-767"></a> <span class="n">QDomDocument</span> <span class="n">doc</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;response&quot;</span><span class="p">));</span>
-<a name="line-768"></a>
-<a name="line-769"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">doc</span><span class="p">.</span><span class="n">setContent</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">))</span>
-<a name="line-770"></a> <span class="p">{</span>
-<a name="line-771"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid XML: parse error&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">;</span>
-<a name="line-772"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_GETTOKEN_ERROR</span><span class="p">);</span>
-<a name="line-773"></a> <span class="p">}</span>
-<a name="line-774"></a>
-<a name="line-775"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">rootElem</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">documentElement</span><span class="p">();</span>
-<a name="line-776"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">tokenElem</span> <span class="o">=</span> <span class="n">rootElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;token&quot;</span><span class="p">));</span>
-<a name="line-777"></a>
-<a name="line-778"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tokenElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">tokenElem</span><span class="p">.</span><span class="n">nodeType</span><span class="p">()</span> <span class="o">!=</span> <span class="n">QDomNode</span><span class="o">::</span><span class="n">ElementNode</span><span class="p">)</span>
-<a name="line-779"></a> <span class="p">{</span>
-<a name="line-780"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">errorElem</span> <span class="o">=</span> <span class="n">rootElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;error&quot;</span><span class="p">));</span>
-<a name="line-781"></a>
-<a name="line-782"></a> <span class="k">if</span> <span class="p">(</span><span class="n">errorElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">errorElem</span><span class="p">.</span><span class="n">nodeType</span><span class="p">()</span> <span class="o">!=</span> <span class="n">QDomNode</span><span class="o">::</span><span class="n">ElementNode</span><span class="p">)</span>
-<a name="line-783"></a> <span class="p">{</span>
-<a name="line-784"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Auth unknown error&quot;</span><span class="p">;</span>
-<a name="line-785"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_GETTOKEN_ERROR</span><span class="p">);</span>
-<a name="line-786"></a> <span class="p">}</span>
-<a name="line-787"></a>
-<a name="line-788"></a><span class="cm">/*</span>
-<a name="line-789"></a><span class="cm"> // checked by HTTP error code in prepareJobResult</span>
-<a name="line-790"></a><span class="cm"> const QString errorCode = errorElem.attribute(&quot;code&quot;, &quot;0&quot;);</span>
-<a name="line-791"></a><span class="cm"> qCDebug(DIGIKAM_WEBSERVICES_LOG) &lt;&lt; QString(&quot;Auth error: %1, code=%2&quot;).arg(errorElem.text()).arg(errorCode);</span>
-<a name="line-792"></a>
-<a name="line-793"></a><span class="cm"> if (errorCode == &quot;2&quot;)</span>
-<a name="line-794"></a><span class="cm"> {</span>
-<a name="line-795"></a><span class="cm"> // Invalid credentials</span>
-<a name="line-796"></a><span class="cm"> return setErrorState(STATE_GETTOKEN_INVALID_CREDENTIALS);</span>
-<a name="line-797"></a><span class="cm"> }</span>
-<a name="line-798"></a><span class="cm">*/</span>
-<a name="line-799"></a>
-<a name="line-800"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-801"></a> <span class="p">}</span>
-<a name="line-802"></a>
-<a name="line-803"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">token</span> <span class="o">=</span> <span class="n">tokenElem</span><span class="p">.</span><span class="n">text</span><span class="p">();</span>
-<a name="line-804"></a>
-<a name="line-805"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Token got&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">token</span><span class="p">;</span>
-<a name="line-806"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_GETTOKEN_DONE</span><span class="p">;</span>
-<a name="line-807"></a> <span class="n">emit</span> <span class="nf">signalGetTokenDone</span><span class="p">();</span>
-<a name="line-808"></a><span class="p">}</span>
-<a name="line-809"></a>
-<a name="line-810"></a>
-<a name="line-811"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">slotParseResponseListAlbums</span><span class="p">()</span>
-<a name="line-812"></a><span class="p">{</span>
-<a name="line-813"></a> <span class="n">QDomDocument</span> <span class="n">doc</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;feed&quot;</span><span class="p">));</span>
-<a name="line-814"></a>
-<a name="line-815"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">doc</span><span class="p">.</span><span class="n">setContent</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">))</span>
-<a name="line-816"></a> <span class="p">{</span>
-<a name="line-817"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid XML: parse error&quot;</span><span class="p">;</span>
-<a name="line-818"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_LISTALBUMS_ERROR</span><span class="p">);</span>
-<a name="line-819"></a> <span class="p">}</span>
+<a name="line-701"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">imagesInYear</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
+<a name="line-702"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">);</span>
+<a name="line-703"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">yearDAlbum</span><span class="p">),</span> <span class="n">imagesInYear</span><span class="p">);</span>
+<a name="line-704"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">excludeChildrenCount</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">);</span>
+<a name="line-705"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">yearDAlbum</span><span class="p">),</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-706"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">);</span>
+<a name="line-707"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">yearDAlbum</span><span class="p">),</span> <span class="n">imagesInYear</span><span class="p">);</span>
+<a name="line-708"></a>
+<a name="line-709"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">monthRow</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">monthRow</span> <span class="o">&lt;</span> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">);</span> <span class="o">++</span><span class="n">monthRow</span><span class="p">)</span>
+<a name="line-710"></a> <span class="p">{</span>
+<a name="line-711"></a> <span class="n">QModelIndex</span> <span class="n">monthIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">monthRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">yearIndex</span><span class="p">);</span>
+<a name="line-712"></a> <span class="n">DAlbum</span><span class="o">*</span> <span class="n">monthDAlbum</span> <span class="o">=</span> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumForIndex</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
+<a name="line-713"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">);</span>
+<a name="line-714"></a>
+<a name="line-715"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="o">-&gt;</span><span class="n">range</span><span class="p">()</span> <span class="o">==</span> <span class="n">DAlbum</span><span class="o">::</span><span class="n">Month</span><span class="p">);</span>
+<a name="line-716"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2007</span><span class="p">);</span>
+<a name="line-717"></a>
+<a name="line-718"></a> <span class="k">if</span> <span class="p">(</span><span class="n">monthDAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span>
+<a name="line-719"></a> <span class="p">{</span>
+<a name="line-720"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">imagesInMonth</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
+<a name="line-721"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
+<a name="line-722"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
+<a name="line-723"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">excludeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
+<a name="line-724"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
+<a name="line-725"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
+<a name="line-726"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
+<a name="line-727"></a> <span class="p">}</span>
+<a name="line-728"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">monthDAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">==</span> <span class="mi">4</span><span class="p">)</span>
+<a name="line-729"></a> <span class="p">{</span>
+<a name="line-730"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">imagesInMonth</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
+<a name="line-731"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
+<a name="line-732"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
+<a name="line-733"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">excludeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
+<a name="line-734"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
+<a name="line-735"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
+<a name="line-736"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
+<a name="line-737"></a> <span class="p">}</span>
+<a name="line-738"></a> <span class="k">else</span>
+<a name="line-739"></a> <span class="p">{</span>
+<a name="line-740"></a> <span class="n">QFAIL</span><span class="p">(</span><span class="s">&quot;unexpected month album in 2007&quot;</span><span class="p">);</span>
+<a name="line-741"></a> <span class="p">}</span>
+<a name="line-742"></a> <span class="p">}</span>
+<a name="line-743"></a> <span class="p">}</span>
+<a name="line-744"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">yearDAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2009</span><span class="p">)</span>
+<a name="line-745"></a> <span class="p">{</span>
+<a name="line-746"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">imagesInYear</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
+<a name="line-747"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">);</span>
+<a name="line-748"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">yearDAlbum</span><span class="p">),</span> <span class="n">imagesInYear</span><span class="p">);</span>
+<a name="line-749"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">excludeChildrenCount</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">);</span>
+<a name="line-750"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">yearDAlbum</span><span class="p">),</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-751"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">);</span>
+<a name="line-752"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">yearDAlbum</span><span class="p">),</span> <span class="n">imagesInYear</span><span class="p">);</span>
+<a name="line-753"></a>
+<a name="line-754"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">monthRow</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">monthRow</span> <span class="o">&lt;</span> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">);</span> <span class="o">++</span><span class="n">monthRow</span><span class="p">)</span>
+<a name="line-755"></a> <span class="p">{</span>
+<a name="line-756"></a> <span class="n">QModelIndex</span> <span class="n">monthIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">monthRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">yearIndex</span><span class="p">);</span>
+<a name="line-757"></a> <span class="n">DAlbum</span><span class="o">*</span> <span class="n">monthDAlbum</span> <span class="o">=</span> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumForIndex</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
+<a name="line-758"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">);</span>
+<a name="line-759"></a>
+<a name="line-760"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="o">-&gt;</span><span class="n">range</span><span class="p">()</span> <span class="o">==</span> <span class="n">DAlbum</span><span class="o">::</span><span class="n">Month</span><span class="p">);</span>
+<a name="line-761"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2009</span><span class="p">);</span>
+<a name="line-762"></a>
+<a name="line-763"></a> <span class="k">if</span> <span class="p">(</span><span class="n">monthDAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span>
+<a name="line-764"></a> <span class="p">{</span>
+<a name="line-765"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">imagesInMonth</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
+<a name="line-766"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
+<a name="line-767"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
+<a name="line-768"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">excludeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
+<a name="line-769"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
+<a name="line-770"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
+<a name="line-771"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
+<a name="line-772"></a> <span class="p">}</span>
+<a name="line-773"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">monthDAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">==</span> <span class="mi">4</span><span class="p">)</span>
+<a name="line-774"></a> <span class="p">{</span>
+<a name="line-775"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">imagesInMonth</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
+<a name="line-776"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
+<a name="line-777"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
+<a name="line-778"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">excludeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
+<a name="line-779"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
+<a name="line-780"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
+<a name="line-781"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
+<a name="line-782"></a> <span class="p">}</span>
+<a name="line-783"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">monthDAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">==</span> <span class="mi">5</span><span class="p">)</span>
+<a name="line-784"></a> <span class="p">{</span>
+<a name="line-785"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">imagesInMonth</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+<a name="line-786"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
+<a name="line-787"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
+<a name="line-788"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">excludeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
+<a name="line-789"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
+<a name="line-790"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
+<a name="line-791"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
+<a name="line-792"></a> <span class="p">}</span>
+<a name="line-793"></a> <span class="k">else</span>
+<a name="line-794"></a> <span class="p">{</span>
+<a name="line-795"></a> <span class="n">QFAIL</span><span class="p">(</span><span class="s">&quot;unexpected month album in 2009&quot;</span><span class="p">);</span>
+<a name="line-796"></a> <span class="p">}</span>
+<a name="line-797"></a> <span class="p">}</span>
+<a name="line-798"></a> <span class="p">}</span>
+<a name="line-799"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">yearDAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">1997</span><span class="p">)</span>
+<a name="line-800"></a> <span class="p">{</span>
+<a name="line-801"></a> <span class="c1">// Nothing to do here, ignore the albums for ordering tests</span>
+<a name="line-802"></a> <span class="p">}</span>
+<a name="line-803"></a> <span class="k">else</span>
+<a name="line-804"></a> <span class="p">{</span>
+<a name="line-805"></a> <span class="n">QFAIL</span><span class="p">(</span><span class="s">&quot;Received unexpected album from model&quot;</span><span class="p">);</span>
+<a name="line-806"></a> <span class="p">}</span>
+<a name="line-807"></a> <span class="p">}</span>
+<a name="line-808"></a>
+<a name="line-809"></a> <span class="k">delete</span> <span class="n">albumModel</span><span class="p">;</span>
+<a name="line-810"></a><span class="p">}</span>
+<a name="line-811"></a>
+<a name="line-812"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">testTAlbumModel</span><span class="p">()</span>
+<a name="line-813"></a><span class="p">{</span>
+<a name="line-814"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start AlbumModelTest::testTAlbumModel()&quot;</span><span class="p">;</span>
+<a name="line-815"></a>
+<a name="line-816"></a> <span class="n">TagModel</span><span class="o">*</span> <span class="n">albumModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TagModel</span><span class="p">();</span>
+<a name="line-817"></a> <span class="n">ModelTest</span><span class="o">*</span> <span class="n">test</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModelTest</span><span class="p">(</span><span class="n">albumModel</span><span class="p">,</span> <span class="k">nullptr</span><span class="p">);</span>
+<a name="line-818"></a> <span class="k">delete</span> <span class="n">test</span><span class="p">;</span>
+<a name="line-819"></a> <span class="k">delete</span> <span class="n">albumModel</span><span class="p">;</span>
<a name="line-820"></a>
-<a name="line-821"></a> <span class="kt">bool</span> <span class="n">errorOccurred</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-822"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">rootElem</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">documentElement</span><span class="p">();</span>
-<a name="line-823"></a>
-<a name="line-824"></a> <span class="c1">// find next page link</span>
-<a name="line-825"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albumsNextUrl</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
-<a name="line-826"></a><span class="hll"> <span class="n">QDomElement</span> <span class="n">linkElem</span> <span class="o">=</span> <span class="n">rootElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;link&quot;</span><span class="p">));</span><span class='error2'>&lt;--- Shadowed declaration</span>
-</span><a name="line-827"></a>
-<a name="line-828"></a> <span class="k">for</span> <span class="p">(</span> <span class="p">;</span> <span class="o">!</span><span class="n">linkElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="p">;</span>
-<a name="line-829"></a> <span class="n">linkElem</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">.</span><span class="n">nextSiblingElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;link&quot;</span><span class="p">)))</span>
-<a name="line-830"></a> <span class="p">{</span>
-<a name="line-831"></a> <span class="k">if</span> <span class="p">(</span><span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rel&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;next&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
-<a name="line-832"></a> <span class="o">!</span><span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">)).</span><span class="n">isNull</span><span class="p">())</span>
-<a name="line-833"></a> <span class="p">{</span>
-<a name="line-834"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albumsNextUrl</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">));</span>
-<a name="line-835"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-836"></a> <span class="p">}</span>
-<a name="line-837"></a> <span class="p">}</span>
-<a name="line-838"></a>
-<a name="line-839"></a> <span class="n">QDomElement</span> <span class="n">entryElem</span> <span class="o">=</span> <span class="n">rootElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;entry&quot;</span><span class="p">));</span>
-<a name="line-840"></a>
-<a name="line-841"></a> <span class="k">for</span> <span class="p">(</span> <span class="p">;</span> <span class="o">!</span><span class="n">entryElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="p">;</span>
-<a name="line-842"></a> <span class="n">entryElem</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">nextSiblingElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;entry&quot;</span><span class="p">)))</span>
-<a name="line-843"></a> <span class="p">{</span>
-<a name="line-844"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">urn</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;id&quot;</span><span class="p">));</span>
-<a name="line-845"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">author</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;author&quot;</span><span class="p">));</span>
-<a name="line-846"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">title</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;title&quot;</span><span class="p">));</span>
-<a name="line-847"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">summary</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;summary&quot;</span><span class="p">));</span>
-<a name="line-848"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">published</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;published&quot;</span><span class="p">));</span>
-<a name="line-849"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">edited</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;app:edited&quot;</span><span class="p">));</span>
-<a name="line-850"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">updated</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;updated&quot;</span><span class="p">));</span>
-<a name="line-851"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">prot</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;protected&quot;</span><span class="p">));</span>
-<a name="line-852"></a>
-<a name="line-853"></a> <span class="n">QDomElement</span> <span class="n">linkSelf</span><span class="p">;</span>
-<a name="line-854"></a> <span class="n">QDomElement</span> <span class="n">linkEdit</span><span class="p">;</span>
-<a name="line-855"></a> <span class="n">QDomElement</span> <span class="n">linkPhotos</span><span class="p">;</span>
-<a name="line-856"></a>
-<a name="line-857"></a><span class="hll"> <span class="n">QDomElement</span> <span class="n">linkElem</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;link&quot;</span><span class="p">));</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-858"></a>
-<a name="line-859"></a> <span class="k">for</span> <span class="p">(</span> <span class="p">;</span> <span class="o">!</span><span class="n">linkElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="p">;</span>
-<a name="line-860"></a> <span class="n">linkElem</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">.</span><span class="n">nextSiblingElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;link&quot;</span><span class="p">)))</span>
-<a name="line-861"></a> <span class="p">{</span>
-<a name="line-862"></a> <span class="k">if</span> <span class="p">(</span><span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rel&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;self&quot;</span><span class="p">))</span>
-<a name="line-863"></a> <span class="n">linkSelf</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">;</span>
-<a name="line-864"></a> <span class="k">else</span> <span class="nf">if</span> <span class="p">(</span><span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rel&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;edit&quot;</span><span class="p">))</span>
-<a name="line-865"></a> <span class="n">linkEdit</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">;</span>
-<a name="line-866"></a> <span class="k">else</span> <span class="nf">if</span> <span class="p">(</span><span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rel&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;photos&quot;</span><span class="p">))</span>
-<a name="line-867"></a> <span class="n">linkPhotos</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">;</span>
-<a name="line-868"></a> <span class="c1">// else skip &lt;link&gt;</span>
-<a name="line-869"></a> <span class="p">}</span>
-<a name="line-870"></a>
-<a name="line-871"></a> <span class="k">if</span> <span class="p">(</span><span class="n">urn</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">title</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span>
-<a name="line-872"></a> <span class="n">linkSelf</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">linkEdit</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">linkPhotos</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
-<a name="line-873"></a> <span class="p">{</span>
-<a name="line-874"></a> <span class="n">errorOccurred</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-875"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid XML data: invalid entry on line&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">lineNumber</span><span class="p">();</span>
-<a name="line-876"></a> <span class="c1">// simple skip this record, no additional messages to user</span>
-<a name="line-877"></a> <span class="k">continue</span><span class="p">;</span>
-<a name="line-878"></a> <span class="p">}</span>
-<a name="line-879"></a>
-<a name="line-880"></a> <span class="n">QString</span> <span class="n">password</span><span class="p">;</span>
-<a name="line-881"></a>
-<a name="line-882"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">prot</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">prot</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;value&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;false&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;true&quot;</span><span class="p">))</span>
-<a name="line-883"></a> <span class="p">{</span>
-<a name="line-884"></a> <span class="n">password</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">);</span> <span class="c1">// set not null value</span>
-<a name="line-885"></a> <span class="p">}</span>
-<a name="line-886"></a>
-<a name="line-887"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albums</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">YandexFotkiAlbum</span><span class="p">(</span>
-<a name="line-888"></a> <span class="n">urn</span><span class="p">.</span><span class="n">text</span><span class="p">(),</span>
-<a name="line-889"></a> <span class="n">author</span><span class="p">.</span><span class="n">text</span><span class="p">(),</span>
-<a name="line-890"></a> <span class="n">title</span><span class="p">.</span><span class="n">text</span><span class="p">(),</span>
-<a name="line-891"></a> <span class="n">summary</span><span class="p">.</span><span class="n">text</span><span class="p">(),</span>
-<a name="line-892"></a> <span class="n">linkEdit</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">)),</span>
-<a name="line-893"></a> <span class="n">linkSelf</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">)),</span>
-<a name="line-894"></a> <span class="n">linkPhotos</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">)),</span>
-<a name="line-895"></a> <span class="n">QDateTime</span><span class="o">::</span><span class="n">fromString</span><span class="p">(</span><span class="n">published</span><span class="p">.</span><span class="n">text</span><span class="p">(),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yyyy-MM-ddTHH:mm:ssZ&quot;</span><span class="p">)),</span>
-<a name="line-896"></a> <span class="n">QDateTime</span><span class="o">::</span><span class="n">fromString</span><span class="p">(</span><span class="n">edited</span><span class="p">.</span><span class="n">text</span><span class="p">(),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yyyy-MM-ddTHH:mm:ssZ&quot;</span><span class="p">)),</span>
-<a name="line-897"></a> <span class="n">QDateTime</span><span class="o">::</span><span class="n">fromString</span><span class="p">(</span><span class="n">updated</span><span class="p">.</span><span class="n">text</span><span class="p">(),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yyyy-MM-ddTHH:mm:ssZ&quot;</span><span class="p">)),</span>
-<a name="line-898"></a> <span class="n">password</span>
-<a name="line-899"></a> <span class="p">));</span>
-<a name="line-900"></a>
-<a name="line-901"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Found album:&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albums</span><span class="p">.</span><span class="n">last</span><span class="p">();</span>
-<a name="line-902"></a> <span class="p">}</span>
-<a name="line-903"></a>
-<a name="line-904"></a> <span class="c1">// TODO: pagination like listPhotos</span>
-<a name="line-905"></a>
-<a name="line-906"></a> <span class="c1">// if an error has occurred and we didn&#39;t find anything =&gt; notify user</span>
-<a name="line-907"></a> <span class="k">if</span> <span class="p">(</span><span class="n">errorOccurred</span> <span class="o">&amp;&amp;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albums</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-908"></a> <span class="p">{</span>
-<a name="line-909"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;No result and errors have occurred&quot;</span><span class="p">;</span>
-<a name="line-910"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_LISTALBUMS_ERROR</span><span class="p">);</span>
-<a name="line-911"></a> <span class="p">}</span>
-<a name="line-912"></a>
-<a name="line-913"></a> <span class="c1">// we have next page</span>
-<a name="line-914"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">albumsNextUrl</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
-<a name="line-915"></a> <span class="p">{</span>
-<a name="line-916"></a> <span class="k">return</span> <span class="n">listAlbumsNext</span><span class="p">();</span>
-<a name="line-917"></a> <span class="p">}</span>
-<a name="line-918"></a> <span class="k">else</span>
-<a name="line-919"></a> <span class="p">{</span>
-<a name="line-920"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;List albums done: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albums</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
-<a name="line-921"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_LISTALBUMS_DONE</span><span class="p">;</span>
-<a name="line-922"></a> <span class="n">emit</span> <span class="nf">signalListAlbumsDone</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">albums</span><span class="p">);</span>
-<a name="line-923"></a> <span class="p">}</span>
-<a name="line-924"></a><span class="p">}</span>
-<a name="line-925"></a>
-<a name="line-926"></a><span class="kt">bool</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">slotParsePhotoXml</span><span class="p">(</span><span class="k">const</span> <span class="n">QDomElement</span><span class="o">&amp;</span> <span class="n">entryElem</span><span class="p">,</span> <span class="n">YFPhoto</span><span class="o">&amp;</span> <span class="n">photo</span><span class="p">)</span>
-<a name="line-927"></a><span class="p">{</span>
-<a name="line-928"></a>
-<a name="line-929"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">urn</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;id&quot;</span><span class="p">));</span>
-<a name="line-930"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">author</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;author&quot;</span><span class="p">));</span>
-<a name="line-931"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">title</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;title&quot;</span><span class="p">));</span>
-<a name="line-932"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">summary</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;summary&quot;</span><span class="p">));</span>
-<a name="line-933"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">published</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;published&quot;</span><span class="p">));</span>
-<a name="line-934"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">edited</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;app:edited&quot;</span><span class="p">));</span>
-<a name="line-935"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">updated</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;updated&quot;</span><span class="p">));</span>
-<a name="line-936"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">created</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;f:created&quot;</span><span class="p">));</span>
-<a name="line-937"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">accessAttr</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;f:access&quot;</span><span class="p">));</span>
-<a name="line-938"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">hideOriginal</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;f:hide_original&quot;</span><span class="p">));</span>
-<a name="line-939"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">disableComments</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;f:disable_comments&quot;</span><span class="p">));</span>
-<a name="line-940"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">adult</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;f:xxx&quot;</span><span class="p">));</span>
-<a name="line-941"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">content</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;content&quot;</span><span class="p">));</span>
-<a name="line-942"></a>
-<a name="line-943"></a> <span class="n">QDomElement</span> <span class="n">linkSelf</span><span class="p">;</span>
-<a name="line-944"></a> <span class="n">QDomElement</span> <span class="n">linkEdit</span><span class="p">;</span>
-<a name="line-945"></a> <span class="n">QDomElement</span> <span class="n">linkMedia</span><span class="p">;</span>
-<a name="line-946"></a> <span class="n">QDomElement</span> <span class="n">linkAlbum</span><span class="p">;</span>
-<a name="line-947"></a>
-<a name="line-948"></a> <span class="n">QDomElement</span> <span class="n">linkElem</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;link&quot;</span><span class="p">));</span>
-<a name="line-949"></a>
-<a name="line-950"></a> <span class="k">for</span> <span class="p">(</span> <span class="p">;</span> <span class="o">!</span><span class="n">linkElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="p">;</span>
-<a name="line-951"></a> <span class="n">linkElem</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">.</span><span class="n">nextSiblingElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;link&quot;</span><span class="p">)))</span>
-<a name="line-952"></a> <span class="p">{</span>
-<a name="line-953"></a>
-<a name="line-954"></a> <span class="k">if</span> <span class="p">(</span><span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rel&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;self&quot;</span><span class="p">))</span>
-<a name="line-955"></a> <span class="n">linkSelf</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">;</span>
-<a name="line-956"></a> <span class="k">else</span> <span class="nf">if</span> <span class="p">(</span><span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rel&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;edit&quot;</span><span class="p">))</span>
-<a name="line-957"></a> <span class="n">linkEdit</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">;</span>
-<a name="line-958"></a> <span class="k">else</span> <span class="nf">if</span> <span class="p">(</span><span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rel&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;edit-media&quot;</span><span class="p">))</span>
-<a name="line-959"></a> <span class="n">linkMedia</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">;</span>
-<a name="line-960"></a> <span class="k">else</span> <span class="nf">if</span> <span class="p">(</span><span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rel&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;album&quot;</span><span class="p">))</span>
-<a name="line-961"></a> <span class="n">linkAlbum</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">;</span>
-<a name="line-962"></a> <span class="c1">// else skip &lt;link&gt;</span>
-<a name="line-963"></a> <span class="p">}</span>
-<a name="line-964"></a>
-<a name="line-965"></a> <span class="c1">// XML sanity checks</span>
-<a name="line-966"></a> <span class="k">if</span> <span class="p">(</span><span class="n">urn</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">title</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span>
-<a name="line-967"></a> <span class="n">linkSelf</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">linkEdit</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span>
-<a name="line-968"></a> <span class="n">linkMedia</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">linkAlbum</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span>
-<a name="line-969"></a> <span class="o">!</span><span class="n">content</span><span class="p">.</span><span class="n">hasAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;src&quot;</span><span class="p">))</span> <span class="o">||</span>
-<a name="line-970"></a> <span class="o">!</span><span class="n">accessAttr</span><span class="p">.</span><span class="n">hasAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;value&quot;</span><span class="p">)))</span>
-<a name="line-971"></a> <span class="p">{</span>
-<a name="line-972"></a>
-<a name="line-973"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid XML data, error on line&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">lineNumber</span><span class="p">();</span>
-<a name="line-974"></a> <span class="c1">// simple skip this record, no additional messages to user</span>
-<a name="line-975"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-976"></a> <span class="p">}</span>
-<a name="line-977"></a>
-<a name="line-978"></a> <span class="k">const</span> <span class="n">QString</span> <span class="n">accessString</span> <span class="o">=</span> <span class="n">accessAttr</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;value&quot;</span><span class="p">));</span>
-<a name="line-979"></a>
-<a name="line-980"></a> <span class="n">YFPhoto</span><span class="o">::</span><span class="n">Access</span> <span class="n">access</span><span class="p">;</span>
-<a name="line-981"></a>
-<a name="line-982"></a> <span class="k">if</span> <span class="p">(</span><span class="n">accessString</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">ACCESS_STRINGS</span><span class="p">[</span><span class="n">YFPhoto</span><span class="o">::</span><span class="n">ACCESS_PRIVATE</span><span class="p">])</span>
-<a name="line-983"></a> <span class="n">access</span> <span class="o">=</span> <span class="n">YFPhoto</span><span class="o">::</span><span class="n">ACCESS_PRIVATE</span><span class="p">;</span>
-<a name="line-984"></a> <span class="k">else</span> <span class="nf">if</span> <span class="p">(</span><span class="n">accessString</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">ACCESS_STRINGS</span><span class="p">[</span><span class="n">YFPhoto</span><span class="o">::</span><span class="n">ACCESS_FRIENDS</span><span class="p">])</span>
-<a name="line-985"></a> <span class="n">access</span> <span class="o">=</span> <span class="n">YFPhoto</span><span class="o">::</span><span class="n">ACCESS_FRIENDS</span><span class="p">;</span>
-<a name="line-986"></a> <span class="k">else</span> <span class="nf">if</span> <span class="p">(</span><span class="n">accessString</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">ACCESS_STRINGS</span><span class="p">[</span><span class="n">YFPhoto</span><span class="o">::</span><span class="n">ACCESS_PUBLIC</span><span class="p">])</span>
-<a name="line-987"></a> <span class="n">access</span> <span class="o">=</span> <span class="n">YFPhoto</span><span class="o">::</span><span class="n">ACCESS_PUBLIC</span><span class="p">;</span>
-<a name="line-988"></a> <span class="k">else</span>
-<a name="line-989"></a> <span class="p">{</span>
-<a name="line-990"></a> <span class="n">qCCritical</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Unknown photo access level: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">accessString</span><span class="p">;</span>
-<a name="line-991"></a> <span class="n">access</span> <span class="o">=</span> <span class="n">YFPhoto</span><span class="o">::</span><span class="n">ACCESS_PUBLIC</span><span class="p">;</span>
-<a name="line-992"></a> <span class="p">}</span>
-<a name="line-993"></a>
-<a name="line-994"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_urn</span> <span class="o">=</span> <span class="n">urn</span><span class="p">.</span><span class="n">text</span><span class="p">();</span>
-<a name="line-995"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_author</span> <span class="o">=</span> <span class="n">author</span><span class="p">.</span><span class="n">text</span><span class="p">();</span>
-<a name="line-996"></a>
-<a name="line-997"></a> <span class="n">photo</span><span class="p">.</span><span class="n">setTitle</span><span class="p">(</span><span class="n">title</span><span class="p">.</span><span class="n">text</span><span class="p">());</span>
-<a name="line-998"></a> <span class="n">photo</span><span class="p">.</span><span class="n">setSummary</span><span class="p">(</span><span class="n">summary</span><span class="p">.</span><span class="n">text</span><span class="p">());</span>
-<a name="line-999"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_apiEditUrl</span> <span class="o">=</span> <span class="n">linkEdit</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">));</span>
-<a name="line-1000"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_apiSelfUrl</span> <span class="o">=</span> <span class="n">linkSelf</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">));</span>
-<a name="line-1001"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_apiMediaUrl</span> <span class="o">=</span> <span class="n">linkMedia</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">));</span>
-<a name="line-1002"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_apiAlbumUrl</span> <span class="o">=</span> <span class="n">linkAlbum</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">));</span>
-<a name="line-1003"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_publishedDate</span> <span class="o">=</span> <span class="n">QDateTime</span><span class="o">::</span><span class="n">fromString</span><span class="p">(</span><span class="n">published</span><span class="p">.</span><span class="n">text</span><span class="p">(),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yyyy-MM-ddTHH:mm:ssZ&quot;</span><span class="p">));</span>
-<a name="line-1004"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_editedDate</span> <span class="o">=</span> <span class="n">QDateTime</span><span class="o">::</span><span class="n">fromString</span><span class="p">(</span><span class="n">edited</span><span class="p">.</span><span class="n">text</span><span class="p">(),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yyyy-MM-ddTHH:mm:ssZ&quot;</span><span class="p">));</span>
-<a name="line-1005"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_updatedDate</span> <span class="o">=</span> <span class="n">QDateTime</span><span class="o">::</span><span class="n">fromString</span><span class="p">(</span><span class="n">updated</span><span class="p">.</span><span class="n">text</span><span class="p">(),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yyyy-MM-ddTHH:mm:ssZ&quot;</span><span class="p">));</span>
-<a name="line-1006"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_createdDate</span> <span class="o">=</span> <span class="n">QDateTime</span><span class="o">::</span><span class="n">fromString</span><span class="p">(</span><span class="n">created</span><span class="p">.</span><span class="n">text</span><span class="p">(),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yyyy-MM-ddTHH:mm:ss&quot;</span><span class="p">));</span>
-<a name="line-1007"></a>
-<a name="line-1008"></a> <span class="n">photo</span><span class="p">.</span><span class="n">setAccess</span><span class="p">(</span><span class="n">access</span><span class="p">);</span>
-<a name="line-1009"></a> <span class="n">photo</span><span class="p">.</span><span class="n">setHideOriginal</span><span class="p">(</span><span class="n">hideOriginal</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span>
-<a name="line-1010"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;value&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;false&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;true&quot;</span><span class="p">));</span>
-<a name="line-1011"></a> <span class="n">photo</span><span class="p">.</span><span class="n">setDisableComments</span><span class="p">(</span><span class="n">disableComments</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span>
-<a name="line-1012"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;value&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;false&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;true&quot;</span><span class="p">));</span>
-<a name="line-1013"></a> <span class="n">photo</span><span class="p">.</span><span class="n">setAdult</span><span class="p">(</span><span class="n">adult</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span>
-<a name="line-1014"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;value&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;false&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;true&quot;</span><span class="p">));</span>
-<a name="line-1015"></a>
-<a name="line-1016"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_remoteUrl</span> <span class="o">=</span> <span class="n">content</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;src&quot;</span><span class="p">));</span>
-<a name="line-1017"></a>
-<a name="line-1018"></a> <span class="cm">/*</span>
-<a name="line-1019"></a><span class="cm"> * FIXME: tags part of the API is not documented by Yandex</span>
-<a name="line-1020"></a><span class="cm"> */</span>
-<a name="line-1021"></a>
-<a name="line-1022"></a> <span class="c1">// reload all tags from the response</span>
-<a name="line-1023"></a> <span class="n">photo</span><span class="p">.</span><span class="n">tags</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
-<a name="line-1024"></a> <span class="n">QDomElement</span> <span class="n">category</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;category&quot;</span><span class="p">));</span>
-<a name="line-1025"></a>
-<a name="line-1026"></a> <span class="k">for</span> <span class="p">(</span> <span class="p">;</span> <span class="o">!</span><span class="n">category</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="p">;</span>
-<a name="line-1027"></a> <span class="n">category</span> <span class="o">=</span> <span class="n">category</span><span class="p">.</span><span class="n">nextSiblingElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;category&quot;</span><span class="p">)))</span>
-<a name="line-1028"></a> <span class="p">{</span>
-<a name="line-1029"></a> <span class="k">if</span> <span class="p">(</span><span class="n">category</span><span class="p">.</span><span class="n">hasAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;term&quot;</span><span class="p">))</span> <span class="o">&amp;&amp;</span>
-<a name="line-1030"></a> <span class="n">category</span><span class="p">.</span><span class="n">hasAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;scheme&quot;</span><span class="p">))</span> <span class="o">&amp;&amp;</span>
-<a name="line-1031"></a> <span class="c1">// FIXME: I have no idea how to make its better, usable API is needed</span>
-<a name="line-1032"></a> <span class="n">category</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;scheme&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">apiTagsUrl</span><span class="p">)</span>
-<a name="line-1033"></a> <span class="p">{</span>
-<a name="line-1034"></a> <span class="n">photo</span><span class="p">.</span><span class="n">tags</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">category</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;term&quot;</span><span class="p">)));</span>
-<a name="line-1035"></a> <span class="p">}</span>
-<a name="line-1036"></a> <span class="p">}</span>
-<a name="line-1037"></a>
-<a name="line-1038"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-1039"></a><span class="p">}</span>
-<a name="line-1040"></a>
-<a name="line-1041"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">slotParseResponseListPhotos</span><span class="p">()</span>
-<a name="line-1042"></a><span class="p">{</span>
-<a name="line-1043"></a> <span class="n">QDomDocument</span> <span class="n">doc</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;feed&quot;</span><span class="p">));</span>
-<a name="line-1044"></a>
-<a name="line-1045"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">doc</span><span class="p">.</span><span class="n">setContent</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">))</span>
-<a name="line-1046"></a> <span class="p">{</span>
-<a name="line-1047"></a> <span class="n">qCCritical</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid XML, parse error: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">;</span>
-<a name="line-1048"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_LISTPHOTOS_ERROR</span><span class="p">);</span>
-<a name="line-1049"></a> <span class="p">}</span>
-<a name="line-1050"></a>
-<a name="line-1051"></a> <span class="kt">int</span> <span class="n">initialSize</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
-<a name="line-1052"></a> <span class="kt">bool</span> <span class="n">errorOccurred</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-1053"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">rootElem</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">documentElement</span><span class="p">();</span>
-<a name="line-1054"></a>
-<a name="line-1055"></a> <span class="c1">// find next page link</span>
-<a name="line-1056"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photosNextUrl</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
-<a name="line-1057"></a> <span class="n">QDomElement</span> <span class="n">linkElem</span> <span class="o">=</span> <span class="n">rootElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;link&quot;</span><span class="p">));</span>
-<a name="line-1058"></a>
-<a name="line-1059"></a> <span class="k">for</span> <span class="p">(</span> <span class="p">;</span> <span class="o">!</span><span class="n">linkElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="p">;</span>
-<a name="line-1060"></a> <span class="n">linkElem</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">.</span><span class="n">nextSiblingElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;link&quot;</span><span class="p">)))</span>
-<a name="line-1061"></a> <span class="p">{</span>
-<a name="line-1062"></a> <span class="k">if</span> <span class="p">(</span><span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;rel&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;next&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
-<a name="line-1063"></a> <span class="o">!</span><span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">)).</span><span class="n">isNull</span><span class="p">())</span>
-<a name="line-1064"></a> <span class="p">{</span>
-<a name="line-1065"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photosNextUrl</span> <span class="o">=</span> <span class="n">linkElem</span><span class="p">.</span><span class="n">attribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">));</span>
-<a name="line-1066"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-1067"></a> <span class="p">}</span>
-<a name="line-1068"></a> <span class="p">}</span>
-<a name="line-1069"></a>
-<a name="line-1070"></a> <span class="n">QDomElement</span> <span class="n">entryElem</span> <span class="o">=</span> <span class="n">rootElem</span><span class="p">.</span><span class="n">firstChildElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;entry&quot;</span><span class="p">));</span>
-<a name="line-1071"></a>
-<a name="line-1072"></a> <span class="k">for</span> <span class="p">(</span> <span class="p">;</span> <span class="o">!</span><span class="n">entryElem</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="p">;</span>
-<a name="line-1073"></a> <span class="n">entryElem</span> <span class="o">=</span> <span class="n">entryElem</span><span class="p">.</span><span class="n">nextSiblingElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;entry&quot;</span><span class="p">)))</span>
-<a name="line-1074"></a> <span class="p">{</span>
-<a name="line-1075"></a> <span class="n">YFPhoto</span> <span class="n">photo</span><span class="p">;</span>
-<a name="line-1076"></a>
-<a name="line-1077"></a> <span class="k">if</span> <span class="p">(</span><span class="n">slotParsePhotoXml</span><span class="p">(</span><span class="n">entryElem</span><span class="p">,</span> <span class="n">photo</span><span class="p">))</span>
-<a name="line-1078"></a> <span class="p">{</span>
-<a name="line-1079"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">photo</span><span class="p">);</span>
-<a name="line-1080"></a> <span class="p">}</span>
-<a name="line-1081"></a> <span class="k">else</span>
-<a name="line-1082"></a> <span class="p">{</span>
-<a name="line-1083"></a> <span class="c1">// set error mark and continue</span>
-<a name="line-1084"></a> <span class="n">errorOccurred</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-1085"></a> <span class="p">}</span>
-<a name="line-1086"></a> <span class="p">}</span>
-<a name="line-1087"></a>
-<a name="line-1088"></a> <span class="c1">// if an error has occurred and we didn&#39;t find anything =&gt; notify user</span>
-<a name="line-1089"></a> <span class="k">if</span> <span class="p">(</span><span class="n">errorOccurred</span> <span class="o">&amp;&amp;</span> <span class="n">initialSize</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">size</span><span class="p">())</span>
-<a name="line-1090"></a> <span class="p">{</span>
-<a name="line-1091"></a> <span class="n">qCCritical</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;No photos found, some XML errors have occurred&quot;</span><span class="p">;</span>
-<a name="line-1092"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_LISTPHOTOS_ERROR</span><span class="p">);</span>
-<a name="line-1093"></a> <span class="p">}</span>
-<a name="line-1094"></a>
-<a name="line-1095"></a> <span class="c1">// we have next page</span>
-<a name="line-1096"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">photosNextUrl</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
-<a name="line-1097"></a> <span class="p">{</span>
-<a name="line-1098"></a> <span class="k">return</span> <span class="n">listPhotosNext</span><span class="p">();</span>
-<a name="line-1099"></a> <span class="p">}</span>
-<a name="line-1100"></a> <span class="k">else</span>
-<a name="line-1101"></a> <span class="p">{</span>
-<a name="line-1102"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;List photos done: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
-<a name="line-1103"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_LISTPHOTOS_DONE</span><span class="p">;</span>
-<a name="line-1104"></a> <span class="n">emit</span> <span class="nf">signalListPhotosDone</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">);</span>
-<a name="line-1105"></a> <span class="p">}</span>
-<a name="line-1106"></a><span class="p">}</span>
-<a name="line-1107"></a>
-<a name="line-1108"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">slotParseResponseUpdatePhotoFile</span><span class="p">()</span>
-<a name="line-1109"></a><span class="p">{</span>
-<a name="line-1110"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Uploaded photo document&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">;</span>
-<a name="line-1111"></a> <span class="n">QDomDocument</span> <span class="nf">doc</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;entry&quot;</span><span class="p">));</span>
-<a name="line-1112"></a>
-<a name="line-1113"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">doc</span><span class="p">.</span><span class="n">setContent</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">))</span>
-<a name="line-1114"></a> <span class="p">{</span>
-<a name="line-1115"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid XML, parse error&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">;</span>
-<a name="line-1116"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_UPDATEPHOTO_INFO_ERROR</span><span class="p">);</span>
-<a name="line-1117"></a> <span class="p">}</span>
-<a name="line-1118"></a>
-<a name="line-1119"></a> <span class="n">YFPhoto</span><span class="o">&amp;</span> <span class="n">photo</span> <span class="o">=</span> <span class="o">*</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">lastPhoto</span><span class="p">;</span>
-<a name="line-1120"></a> <span class="n">YFPhoto</span> <span class="n">tmpPhoto</span><span class="p">;</span>
-<a name="line-1121"></a> <span class="k">const</span> <span class="n">QDomElement</span> <span class="n">entryElem</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">documentElement</span><span class="p">();</span>
-<a name="line-1122"></a>
-<a name="line-1123"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">slotParsePhotoXml</span><span class="p">(</span><span class="n">entryElem</span><span class="p">,</span> <span class="n">tmpPhoto</span><span class="p">))</span>
-<a name="line-1124"></a> <span class="p">{</span>
-<a name="line-1125"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid XML, entry not found&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">;</span>
-<a name="line-1126"></a> <span class="k">return</span> <span class="nf">setErrorState</span><span class="p">(</span><span class="n">STATE_UPDATEPHOTO_INFO_ERROR</span><span class="p">);</span>
-<a name="line-1127"></a> <span class="p">}</span>
-<a name="line-1128"></a>
-<a name="line-1129"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_urn</span> <span class="o">=</span> <span class="n">tmpPhoto</span><span class="p">.</span><span class="n">m_urn</span><span class="p">;</span>
-<a name="line-1130"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_apiEditUrl</span> <span class="o">=</span> <span class="n">tmpPhoto</span><span class="p">.</span><span class="n">m_apiEditUrl</span><span class="p">;</span>
-<a name="line-1131"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_apiSelfUrl</span> <span class="o">=</span> <span class="n">tmpPhoto</span><span class="p">.</span><span class="n">m_apiSelfUrl</span><span class="p">;</span>
-<a name="line-1132"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_apiMediaUrl</span> <span class="o">=</span> <span class="n">tmpPhoto</span><span class="p">.</span><span class="n">m_apiMediaUrl</span><span class="p">;</span>
-<a name="line-1133"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_remoteUrl</span> <span class="o">=</span> <span class="n">tmpPhoto</span><span class="p">.</span><span class="n">m_remoteUrl</span><span class="p">;</span>
-<a name="line-1134"></a> <span class="n">photo</span><span class="p">.</span><span class="n">m_author</span> <span class="o">=</span> <span class="n">tmpPhoto</span><span class="p">.</span><span class="n">m_author</span><span class="p">;</span>
-<a name="line-1135"></a>
-<a name="line-1136"></a> <span class="c1">// update info</span>
-<a name="line-1137"></a> <span class="n">updatePhotoInfo</span><span class="p">(</span><span class="n">photo</span><span class="p">);</span>
-<a name="line-1138"></a><span class="p">}</span>
-<a name="line-1139"></a>
-<a name="line-1140"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">slotParseResponseUpdatePhotoInfo</span><span class="p">()</span>
-<a name="line-1141"></a><span class="p">{</span>
-<a name="line-1142"></a> <span class="n">YFPhoto</span><span class="o">&amp;</span> <span class="n">photo</span> <span class="o">=</span> <span class="o">*</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">lastPhoto</span><span class="p">;</span>
-<a name="line-1143"></a>
-<a name="line-1144"></a><span class="cm">/*</span>
-<a name="line-1145"></a><span class="cm"> // reload all information</span>
-<a name="line-1146"></a><span class="cm"> QDomDocument doc(&quot;entry&quot;);</span>
-<a name="line-1147"></a>
-<a name="line-1148"></a><span class="cm"> if (!doc.setContent(d-&gt;buffer))</span>
-<a name="line-1149"></a><span class="cm"> {</span>
-<a name="line-1150"></a><span class="cm"> qCDebug(DIGIKAM_WEBSERVICES_LOG) &lt;&lt; &quot;Invalid XML: parse error&quot; &lt;&lt; d-&gt;buffer;</span>
-<a name="line-1151"></a><span class="cm"> return setErrorState(STATE_UPDATEPHOTO_INFO_ERROR);</span>
-<a name="line-1152"></a><span class="cm"> }</span>
-<a name="line-1153"></a>
-<a name="line-1154"></a><span class="cm"> const QDomElement entryElem = doc.documentElement();</span>
-<a name="line-1155"></a>
-<a name="line-1156"></a><span class="cm"> if (!slotParsePhotoXml(entryElem, photo))</span>
-<a name="line-1157"></a><span class="cm"> {</span>
-<a name="line-1158"></a><span class="cm"> qCDebug(DIGIKAM_WEBSERVICES_LOG) &lt;&lt; &quot;Can&#39;t reload photo after uploading&quot;;</span>
-<a name="line-1159"></a><span class="cm"> return setErrorState(STATE_UPDATEPHOTO_INFO_ERROR);</span>
-<a name="line-1160"></a><span class="cm"> }</span>
-<a name="line-1161"></a><span class="cm">*/</span>
-<a name="line-1162"></a>
-<a name="line-1163"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_UPDATEPHOTO_DONE</span><span class="p">;</span>
-<a name="line-1164"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">lastPhoto</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-1165"></a> <span class="n">emit</span> <span class="nf">signalUpdatePhotoDone</span><span class="p">(</span><span class="n">photo</span><span class="p">);</span>
-<a name="line-1166"></a><span class="p">}</span>
-<a name="line-1167"></a>
-<a name="line-1168"></a><span class="kt">void</span> <span class="n">YFTalker</span><span class="o">::</span><span class="n">slotParseResponseUpdateAlbum</span><span class="p">()</span>
-<a name="line-1169"></a><span class="p">{</span>
-<a name="line-1170"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Updated album&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buffer</span><span class="p">;</span>
-<a name="line-1171"></a>
-<a name="line-1172"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">STATE_UPDATEALBUM_DONE</span><span class="p">;</span>
-<a name="line-1173"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">lastPhoto</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-1174"></a>
-<a name="line-1175"></a> <span class="n">emit</span> <span class="nf">signalUpdateAlbumDone</span><span class="p">();</span>
-<a name="line-1176"></a><span class="p">}</span>
-<a name="line-1177"></a>
-<a name="line-1178"></a><span class="p">}</span> <span class="c1">// namespace DigikamGenericYFPlugin</span>
+<a name="line-821"></a> <span class="n">albumModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TagModel</span><span class="p">(</span><span class="n">AbstractAlbumModel</span><span class="o">::</span><span class="n">IgnoreRootAlbum</span><span class="p">);</span>
+<a name="line-822"></a> <span class="n">test</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModelTest</span><span class="p">(</span><span class="n">albumModel</span><span class="p">,</span> <span class="k">nullptr</span><span class="p">);</span>
+<a name="line-823"></a> <span class="k">delete</span> <span class="n">test</span><span class="p">;</span>
+<a name="line-824"></a> <span class="k">delete</span> <span class="n">albumModel</span><span class="p">;</span>
+<a name="line-825"></a><span class="p">}</span>
+<a name="line-826"></a>
+<a name="line-827"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">testSAlbumModel</span><span class="p">()</span>
+<a name="line-828"></a><span class="p">{</span>
+<a name="line-829"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start AlbumModelTest::testSAlbumModel()&quot;</span><span class="p">;</span>
+<a name="line-830"></a>
+<a name="line-831"></a> <span class="n">SearchModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">albumModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SearchModel</span><span class="p">();</span>
+<a name="line-832"></a> <span class="n">ModelTest</span><span class="o">*</span> <span class="k">const</span> <span class="n">test</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModelTest</span><span class="p">(</span><span class="n">albumModel</span><span class="p">,</span> <span class="k">nullptr</span><span class="p">);</span>
+<a name="line-833"></a> <span class="k">delete</span> <span class="n">test</span><span class="p">;</span>
+<a name="line-834"></a> <span class="k">delete</span> <span class="n">albumModel</span><span class="p">;</span>
+<a name="line-835"></a><span class="p">}</span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/15.html b/static/reports/cppcheck/master/15.html
index 949bbfc1c..96c66df38 100644
--- a/static/reports/cppcheck/master/15.html
+++ b/static/reports/cppcheck/master/15.html
@@ -1,475 +1,387 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/libs/album/engine/albumpointer.h </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/tests/geolocation/editor/test_simpletreemodel.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> albumpointer.h</p>
-<a href='15.html#line-139'> operatorEqRetRefThis 139</a>
+ <p id="filename"><a href="index.html">Defects:</a> test_simpletreemodel.cpp</p>
+<a href='15.html#line-69'> shadowVar 69</a><a href='15.html#line-69'> shadowVar 69</a><a href='15.html#line-71'> shadowVar 71</a><a href='15.html#line-71'> shadowVar 71</a><a href='15.html#line-96'> shadowVar 96</a><a href='15.html#line-98'> shadowVar 98</a><a href='15.html#line-108'> shadowVar 108</a><a href='15.html#line-110'> shadowVar 110</a>
</div>
<div id="content">
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
-121
-122
-123
-124
-125
-126
-127
-128
-129
-130
-131
-132
-133
-134
-135
-136
-137
-138
-139
-140
-141
-142
-143
-144
-145
-146
-147
-148
-149
-150
-151
-152
-153
-154
-155
-156
-157
-158
-159
-160
-161
-162
-163
-164
-165</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
+121</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
-<a name="line-6"></a><span class="cm"> * Date : 2004-06-15</span>
-<a name="line-7"></a><span class="cm"> * Description : Albums manager interface.</span>
+<a name="line-6"></a><span class="cm"> * Date : 2010-06-21</span>
+<a name="line-7"></a><span class="cm"> * Description : Test for SimpleTreeModel.</span>
<a name="line-8"></a><span class="cm"> *</span>
-<a name="line-9"></a><span class="cm"> * Copyright (C) 2006-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&gt;</span>
-<a name="line-10"></a><span class="cm"> * Copyright (C) 2006-2011 by Marcel Wiesweg &lt;marcel dot wiesweg at gmx dot de&gt;</span>
-<a name="line-11"></a><span class="cm"> *</span>
-<a name="line-12"></a><span class="cm"> * This program is free software; you can redistribute it</span>
-<a name="line-13"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
-<a name="line-14"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
-<a name="line-15"></a><span class="cm"> * either version 2, or (at your option)</span>
-<a name="line-16"></a><span class="cm"> * any later version.</span>
-<a name="line-17"></a><span class="cm"> *</span>
-<a name="line-18"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
-<a name="line-19"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
-<a name="line-20"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
-<a name="line-21"></a><span class="cm"> * GNU General Public License for more details.</span>
-<a name="line-22"></a><span class="cm"> *</span>
-<a name="line-23"></a><span class="cm"> * ============================================================ */</span>
-<a name="line-24"></a>
-<a name="line-25"></a><span class="cp">#ifndef DIGIKAM_ALBUM_POINTER_H</span>
-<a name="line-26"></a><span class="cp">#define DIGIKAM_ALBUM_POINTER_H</span>
+<a name="line-9"></a><span class="cm"> * Copyright (C) 2010 by Michael G. Hansen &lt;mike at mghansen dot de&gt;</span>
+<a name="line-10"></a><span class="cm"> *</span>
+<a name="line-11"></a><span class="cm"> * This program is free software; you can redistribute it</span>
+<a name="line-12"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
+<a name="line-13"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
+<a name="line-14"></a><span class="cm"> * either version 2, or (at your option)</span>
+<a name="line-15"></a><span class="cm"> * any later version.</span>
+<a name="line-16"></a><span class="cm"> *</span>
+<a name="line-17"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
+<a name="line-18"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
+<a name="line-19"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
+<a name="line-20"></a><span class="cm"> * GNU General Public License for more details.</span>
+<a name="line-21"></a><span class="cm"> *</span>
+<a name="line-22"></a><span class="cm"> * ============================================================ */</span>
+<a name="line-23"></a>
+<a name="line-24"></a><span class="cp">#include</span> <span class="cpf">&quot;test_simpletreemodel.h&quot;</span><span class="cp"></span>
+<a name="line-25"></a>
+<a name="line-26"></a><span class="c1">// Qt includes</span>
<a name="line-27"></a>
-<a name="line-28"></a><span class="c1">// Qt includes</span>
-<a name="line-29"></a>
-<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QList&gt;</span><span class="cp"></span>
-<a name="line-31"></a>
-<a name="line-32"></a><span class="c1">// Local includes</span>
-<a name="line-33"></a>
-<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&quot;album.h&quot;</span><span class="cp"></span>
-<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&quot;albummanager.h&quot;</span><span class="cp"></span>
-<a name="line-36"></a>
-<a name="line-37"></a><span class="n">namespace</span> <span class="n">Digikam</span>
-<a name="line-38"></a><span class="p">{</span>
-<a name="line-39"></a>
-<a name="line-40"></a><span class="cm">/**</span>
-<a name="line-41"></a><span class="cm"> * You can use AlbumPointer to store a guarded pointer to Album</span>
-<a name="line-42"></a><span class="cm"> * or one of the subclasses (use template parameter).</span>
-<a name="line-43"></a><span class="cm"> * The pointer will be set to 0 when the album object is deleted.</span>
-<a name="line-44"></a><span class="cm"> */</span>
-<a name="line-45"></a><span class="n">template</span> <span class="o">&lt;</span><span class="n">class</span> <span class="n">T</span> <span class="o">=</span> <span class="n">Album</span><span class="o">&gt;</span>
-<a name="line-46"></a>
-<a name="line-47"></a><span class="n">class</span> <span class="n">AlbumPointer</span>
-<a name="line-48"></a><span class="p">{</span>
-<a name="line-49"></a><span class="nl">public</span><span class="p">:</span>
-<a name="line-50"></a>
-<a name="line-51"></a> <span class="n">AlbumPointer</span><span class="p">()</span>
-<a name="line-52"></a> <span class="o">:</span> <span class="n">album</span><span class="p">(</span><span class="n">nullptr</span><span class="p">)</span>
-<a name="line-53"></a> <span class="p">{</span>
-<a name="line-54"></a> <span class="p">}</span>
-<a name="line-55"></a>
-<a name="line-56"></a> <span class="c1">// cppcheck-suppress noExplicitConstructor</span>
-<a name="line-57"></a> <span class="n">AlbumPointer</span><span class="p">(</span><span class="n">T</span><span class="o">*</span> <span class="k">const</span> <span class="n">a</span><span class="p">)</span> <span class="c1">// krazy:exclude=explicit</span>
-<a name="line-58"></a> <span class="o">:</span> <span class="n">album</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
-<a name="line-59"></a> <span class="p">{</span>
-<a name="line-60"></a> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">addGuardedPointer</span><span class="p">(</span><span class="n">album</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">album</span><span class="p">);</span>
-<a name="line-61"></a> <span class="p">}</span>
-<a name="line-62"></a>
-<a name="line-63"></a> <span class="c1">// cppcheck-suppress noExplicitConstructor</span>
-<a name="line-64"></a> <span class="n">AlbumPointer</span><span class="p">(</span><span class="k">const</span> <span class="n">AlbumPointer</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;&amp;</span> <span class="n">p</span><span class="p">)</span> <span class="c1">// krazy:exclude=explicit</span>
-<a name="line-65"></a> <span class="o">:</span> <span class="n">album</span><span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">album</span><span class="p">)</span>
-<a name="line-66"></a> <span class="p">{</span>
-<a name="line-67"></a> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">addGuardedPointer</span><span class="p">(</span><span class="n">album</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">album</span><span class="p">);</span>
-<a name="line-68"></a> <span class="p">}</span>
-<a name="line-69"></a>
-<a name="line-70"></a> <span class="o">~</span><span class="n">AlbumPointer</span><span class="p">()</span>
-<a name="line-71"></a> <span class="p">{</span>
-<a name="line-72"></a> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">removeGuardedPointer</span><span class="p">(</span><span class="n">album</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">album</span><span class="p">);</span>
-<a name="line-73"></a> <span class="p">}</span>
-<a name="line-74"></a>
-<a name="line-75"></a> <span class="n">AlbumPointer</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;&amp;</span> <span class="n">operator</span><span class="o">=</span><span class="p">(</span><span class="n">T</span><span class="o">*</span> <span class="k">const</span> <span class="n">a</span><span class="p">)</span>
-<a name="line-76"></a> <span class="p">{</span>
-<a name="line-77"></a> <span class="n">Album</span><span class="o">*</span> <span class="k">const</span> <span class="n">oldAlbum</span> <span class="o">=</span> <span class="n">album</span><span class="p">;</span>
-<a name="line-78"></a> <span class="n">album</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
-<a name="line-79"></a> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">changeGuardedPointer</span><span class="p">(</span><span class="n">oldAlbum</span><span class="p">,</span> <span class="n">album</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">album</span><span class="p">);</span>
-<a name="line-80"></a> <span class="k">return</span> <span class="o">*</span><span class="n">this</span><span class="p">;</span>
-<a name="line-81"></a> <span class="p">}</span>
-<a name="line-82"></a>
-<a name="line-83"></a> <span class="n">AlbumPointer</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;&amp;</span> <span class="n">operator</span><span class="o">=</span><span class="p">(</span><span class="k">const</span> <span class="n">AlbumPointer</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;&amp;</span> <span class="n">p</span><span class="p">)</span>
-<a name="line-84"></a> <span class="p">{</span>
-<a name="line-85"></a> <span class="n">Album</span><span class="o">*</span> <span class="k">const</span> <span class="n">oldAlbum</span> <span class="o">=</span> <span class="n">album</span><span class="p">;</span>
-<a name="line-86"></a> <span class="n">album</span> <span class="o">=</span> <span class="n">p</span><span class="p">.</span><span class="n">album</span><span class="p">;</span>
-<a name="line-87"></a> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">changeGuardedPointer</span><span class="p">(</span><span class="n">oldAlbum</span><span class="p">,</span> <span class="n">album</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">album</span><span class="p">);</span>
-<a name="line-88"></a> <span class="k">return</span> <span class="o">*</span><span class="n">this</span><span class="p">;</span>
-<a name="line-89"></a> <span class="p">}</span>
-<a name="line-90"></a>
-<a name="line-91"></a> <span class="n">T</span><span class="o">*</span> <span class="n">operator</span><span class="o">-&gt;</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-92"></a> <span class="p">{</span>
-<a name="line-93"></a> <span class="k">return</span> <span class="n">static_cast</span><span class="o">&lt;</span><span class="n">T</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">const_cast</span><span class="o">&lt;</span><span class="n">Album</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">album</span><span class="p">));</span>
-<a name="line-94"></a> <span class="p">}</span>
-<a name="line-95"></a>
-<a name="line-96"></a> <span class="n">T</span><span class="o">&amp;</span> <span class="n">operator</span><span class="o">*</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-97"></a> <span class="p">{</span>
-<a name="line-98"></a> <span class="k">return</span> <span class="o">*</span><span class="n">static_cast</span><span class="o">&lt;</span><span class="n">T</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">const_cast</span><span class="o">&lt;</span><span class="n">Album</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">album</span><span class="p">));</span>
-<a name="line-99"></a> <span class="p">}</span>
-<a name="line-100"></a>
-<a name="line-101"></a> <span class="n">operator</span> <span class="n">T</span><span class="o">*</span> <span class="p">()</span> <span class="k">const</span>
-<a name="line-102"></a> <span class="p">{</span>
-<a name="line-103"></a> <span class="k">return</span> <span class="n">static_cast</span><span class="o">&lt;</span><span class="n">T</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">const_cast</span><span class="o">&lt;</span><span class="n">Album</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">album</span><span class="p">));</span>
+<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;QUrl&gt;</span><span class="cp"></span>
+<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QDebug&gt;</span><span class="cp"></span>
+<a name="line-30"></a>
+<a name="line-31"></a><span class="c1">// local includes</span>
+<a name="line-32"></a>
+<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&quot;simpletreemodel.h&quot;</span><span class="cp"></span>
+<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&quot;modeltest.h&quot;</span><span class="cp"></span>
+<a name="line-35"></a>
+<a name="line-36"></a><span class="k">using</span> <span class="k">namespace</span> <span class="n">Digikam</span><span class="p">;</span>
+<a name="line-37"></a>
+<a name="line-38"></a><span class="cm">/**</span>
+<a name="line-39"></a><span class="cm"> * Description : Dummy test that does nothing</span>
+<a name="line-40"></a><span class="cm"> */</span>
+<a name="line-41"></a><span class="kt">void</span> <span class="n">TestSimpleTreeModel</span><span class="o">::</span><span class="n">testNoOp</span><span class="p">()</span>
+<a name="line-42"></a><span class="p">{</span>
+<a name="line-43"></a><span class="p">}</span>
+<a name="line-44"></a>
+<a name="line-45"></a><span class="kt">void</span> <span class="n">TestSimpleTreeModel</span><span class="o">::</span><span class="n">testModel1</span><span class="p">()</span>
+<a name="line-46"></a><span class="p">{</span>
+<a name="line-47"></a> <span class="n">SimpleTreeModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">treeModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SimpleTreeModel</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-48"></a> <span class="k">new</span> <span class="nf">ModelTest</span><span class="p">(</span><span class="n">treeModel</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-49"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="o">!</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">).</span><span class="n">isValid</span><span class="p">());</span>
+<a name="line-50"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">indexToItem</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">())</span><span class="o">==</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">rootItem</span><span class="p">());</span>
+<a name="line-51"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="o">!</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">itemToIndex</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">rootItem</span><span class="p">()).</span><span class="n">isValid</span><span class="p">());</span>
+<a name="line-52"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="o">!</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">itemToIndex</span><span class="p">(</span><span class="k">nullptr</span><span class="p">).</span><span class="n">isValid</span><span class="p">());</span>
+<a name="line-53"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="o">!</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">()).</span><span class="n">isValid</span><span class="p">());</span>
+<a name="line-54"></a>
+<a name="line-55"></a> <span class="n">SimpleTreeModel</span><span class="o">::</span><span class="n">Item</span><span class="o">*</span> <span class="k">const</span> <span class="n">item1</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">();</span>
+<a name="line-56"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item1</span><span class="o">!=</span><span class="k">nullptr</span><span class="p">);</span>
+<a name="line-57"></a> <span class="k">const</span> <span class="n">QPersistentModelIndex</span> <span class="n">item1Index</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">itemToIndex</span><span class="p">(</span><span class="n">item1</span><span class="p">);</span>
+<a name="line-58"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item1Index</span><span class="p">.</span><span class="n">isValid</span><span class="p">());</span>
+<a name="line-59"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">indexToItem</span><span class="p">(</span><span class="n">item1Index</span><span class="p">)</span><span class="o">==</span><span class="n">item1</span><span class="p">);</span>
+<a name="line-60"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="o">!</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">(</span><span class="n">item1Index</span><span class="p">).</span><span class="n">isValid</span><span class="p">());</span>
+<a name="line-61"></a>
+<a name="line-62"></a> <span class="n">SimpleTreeModel</span><span class="o">::</span><span class="n">Item</span><span class="o">*</span> <span class="k">const</span> <span class="n">item2</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">();</span>
+<a name="line-63"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item2</span><span class="o">!=</span><span class="k">nullptr</span><span class="p">);</span>
+<a name="line-64"></a> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">item2Index</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">itemToIndex</span><span class="p">(</span><span class="n">item2</span><span class="p">);</span>
+<a name="line-65"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item2Index</span><span class="p">.</span><span class="n">isValid</span><span class="p">());</span>
+<a name="line-66"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">indexToItem</span><span class="p">(</span><span class="n">item2Index</span><span class="p">)</span><span class="o">==</span><span class="n">item2</span><span class="p">);</span>
+<a name="line-67"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="o">!</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">(</span><span class="n">item2Index</span><span class="p">).</span><span class="n">isValid</span><span class="p">());</span>
+<a name="line-68"></a>
+<a name="line-69"></a><span class="hll"> <span class="n">SimpleTreeModel</span><span class="o">::</span><span class="n">Item</span><span class="o">*</span> <span class="k">const</span> <span class="n">item21</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">item2</span><span class="p">);</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span>
+</span><a name="line-70"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item21</span><span class="o">!=</span><span class="k">nullptr</span><span class="p">);</span>
+<a name="line-71"></a><span class="hll"> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">item21Index</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">itemToIndex</span><span class="p">(</span><span class="n">item21</span><span class="p">);</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span>
+</span><a name="line-72"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item21Index</span><span class="p">.</span><span class="n">isValid</span><span class="p">());</span>
+<a name="line-73"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">indexToItem</span><span class="p">(</span><span class="n">item21Index</span><span class="p">)</span><span class="o">==</span><span class="n">item21</span><span class="p">);</span>
+<a name="line-74"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">(</span><span class="n">item21Index</span><span class="p">)</span><span class="o">==</span><span class="n">item2Index</span><span class="p">);</span>
+<a name="line-75"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">item2Index</span><span class="p">)</span><span class="o">==</span><span class="n">item21Index</span><span class="p">);</span>
+<a name="line-76"></a>
+<a name="line-77"></a> <span class="c1">// just make sure another modeltest will test things for consistency in case a signal went missing</span>
+<a name="line-78"></a> <span class="k">new</span> <span class="nf">ModelTest</span><span class="p">(</span><span class="n">treeModel</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-79"></a>
+<a name="line-80"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">rootItem</span><span class="p">()</span> <span class="o">==</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">indexToItem</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">()));</span>
+<a name="line-81"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">indexToItem</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">itemToIndex</span><span class="p">(</span><span class="n">item1</span><span class="p">))</span><span class="o">==</span><span class="n">item1</span><span class="p">);</span>
+<a name="line-82"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">hasIndex</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">==</span> <span class="nb">true</span><span class="p">);</span>
+<a name="line-83"></a>
+<a name="line-84"></a> <span class="n">QModelIndex</span> <span class="n">topIndex</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">QModelIndex</span><span class="p">());</span>
+<a name="line-85"></a>
+<a name="line-86"></a> <span class="k">if</span> <span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">topIndex</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-87"></a> <span class="p">{</span>
+<a name="line-88"></a> <span class="n">QModelIndex</span> <span class="n">childIndex</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">topIndex</span><span class="p">);</span>
+<a name="line-89"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">childIndex</span><span class="p">;</span>
+<a name="line-90"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">(</span><span class="n">childIndex</span><span class="p">);</span>
+<a name="line-91"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">(</span><span class="n">childIndex</span><span class="p">)</span> <span class="o">==</span> <span class="n">topIndex</span><span class="p">);</span>
+<a name="line-92"></a> <span class="p">}</span>
+<a name="line-93"></a>
+<a name="line-94"></a> <span class="c1">// add another few items:</span>
+<a name="line-95"></a> <span class="p">{</span>
+<a name="line-96"></a><span class="hll"> <span class="n">SimpleTreeModel</span><span class="o">::</span><span class="n">Item</span><span class="o">*</span> <span class="k">const</span> <span class="n">item21</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">item2</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-97"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item21</span><span class="o">!=</span><span class="k">nullptr</span><span class="p">);</span>
+<a name="line-98"></a><span class="hll"> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">item21Index</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">itemToIndex</span><span class="p">(</span><span class="n">item21</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-99"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item21Index</span><span class="p">.</span><span class="n">isValid</span><span class="p">());</span>
+<a name="line-100"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">indexToItem</span><span class="p">(</span><span class="n">item21Index</span><span class="p">)</span><span class="o">==</span><span class="n">item21</span><span class="p">);</span>
+<a name="line-101"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">(</span><span class="n">item21Index</span><span class="p">)</span><span class="o">==</span><span class="n">item2Index</span><span class="p">);</span>
+<a name="line-102"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">item2Index</span><span class="p">)</span><span class="o">==</span><span class="n">item21Index</span><span class="p">);</span>
+<a name="line-103"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item21Index</span><span class="p">.</span><span class="n">row</span><span class="p">()</span><span class="o">==</span><span class="mi">0</span><span class="p">);</span>
<a name="line-104"></a> <span class="p">}</span>
<a name="line-105"></a>
-<a name="line-106"></a> <span class="kt">bool</span> <span class="n">operator</span><span class="o">!</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-106"></a> <span class="c1">// add another few items:</span>
<a name="line-107"></a> <span class="p">{</span>
-<a name="line-108"></a> <span class="k">return</span> <span class="o">!</span><span class="n">album</span><span class="p">;</span>
-<a name="line-109"></a> <span class="p">}</span>
-<a name="line-110"></a>
-<a name="line-111"></a><span class="nl">private</span><span class="p">:</span>
-<a name="line-112"></a>
-<a name="line-113"></a> <span class="n">friend</span> <span class="n">class</span> <span class="n">AlbumManager</span><span class="p">;</span>
-<a name="line-114"></a> <span class="n">Album</span><span class="o">*</span> <span class="n">album</span><span class="p">;</span>
-<a name="line-115"></a><span class="p">};</span>
-<a name="line-116"></a>
-<a name="line-117"></a><span class="c1">// ------------------------------------------------------------------------------------</span>
-<a name="line-118"></a>
-<a name="line-119"></a><span class="n">template</span> <span class="o">&lt;</span><span class="n">class</span> <span class="n">T</span> <span class="o">=</span> <span class="n">Album</span><span class="o">&gt;</span>
+<a name="line-108"></a><span class="hll"> <span class="n">SimpleTreeModel</span><span class="o">::</span><span class="n">Item</span><span class="o">*</span> <span class="k">const</span> <span class="n">item21</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">item2</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-109"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item21</span><span class="o">!=</span><span class="k">nullptr</span><span class="p">);</span>
+<a name="line-110"></a><span class="hll"> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">item21Index</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">itemToIndex</span><span class="p">(</span><span class="n">item21</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-111"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item21Index</span><span class="p">.</span><span class="n">isValid</span><span class="p">());</span>
+<a name="line-112"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">indexToItem</span><span class="p">(</span><span class="n">item21Index</span><span class="p">)</span><span class="o">==</span><span class="n">item21</span><span class="p">);</span>
+<a name="line-113"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">(</span><span class="n">item21Index</span><span class="p">)</span><span class="o">==</span><span class="n">item2Index</span><span class="p">);</span>
+<a name="line-114"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">item2Index</span><span class="p">)</span><span class="o">==</span><span class="n">item21Index</span><span class="p">);</span>
+<a name="line-115"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item21Index</span><span class="p">.</span><span class="n">row</span><span class="p">()</span><span class="o">==</span><span class="mi">1</span><span class="p">);</span>
+<a name="line-116"></a> <span class="p">}</span>
+<a name="line-117"></a>
+<a name="line-118"></a> <span class="k">new</span> <span class="n">ModelTest</span><span class="p">(</span><span class="n">treeModel</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-119"></a><span class="p">}</span>
<a name="line-120"></a>
-<a name="line-121"></a><span class="n">class</span> <span class="nl">AlbumPointerList</span> <span class="p">:</span> <span class="n">public</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">AlbumPointer</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="o">&gt;</span>
-<a name="line-122"></a><span class="p">{</span>
-<a name="line-123"></a><span class="nl">public</span><span class="p">:</span>
-<a name="line-124"></a>
-<a name="line-125"></a> <span class="n">AlbumPointerList</span><span class="p">()</span>
-<a name="line-126"></a> <span class="p">{</span>
-<a name="line-127"></a> <span class="p">}</span>
-<a name="line-128"></a>
-<a name="line-129"></a> <span class="n">explicit</span> <span class="n">AlbumPointerList</span><span class="p">(</span><span class="k">const</span> <span class="n">AlbumPointerList</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;&amp;</span> <span class="n">list</span><span class="p">)</span>
-<a name="line-130"></a> <span class="o">:</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">AlbumPointer</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">(</span><span class="n">list</span><span class="p">)</span>
-<a name="line-131"></a> <span class="p">{</span>
-<a name="line-132"></a> <span class="p">}</span>
-<a name="line-133"></a>
-<a name="line-134"></a> <span class="n">explicit</span> <span class="n">AlbumPointerList</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">T</span><span class="o">*&gt;&amp;</span> <span class="n">list</span><span class="p">)</span>
-<a name="line-135"></a> <span class="p">{</span>
-<a name="line-136"></a> <span class="n">operator</span><span class="o">=</span><span class="p">(</span><span class="n">list</span><span class="p">);</span>
-<a name="line-137"></a> <span class="p">}</span>
-<a name="line-138"></a>
-<a name="line-139"></a><span class="hll"> <span class="n">AlbumPointerList</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;&amp;</span> <span class="n">operator</span><span class="o">=</span><span class="p">(</span><span class="k">const</span> <span class="n">AlbumPointerList</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;&amp;</span> <span class="n">list</span><span class="p">)</span><span class='error2'>&lt;--- 'operator=' should return reference to 'this' instance.</span>
-</span><a name="line-140"></a> <span class="p">{</span>
-<a name="line-141"></a> <span class="k">return</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">AlbumPointer</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="o">&gt;::</span><span class="n">operator</span><span class="o">=</span><span class="p">(</span><span class="n">list</span><span class="p">);</span>
-<a name="line-142"></a> <span class="p">}</span>
-<a name="line-143"></a>
-<a name="line-144"></a> <span class="c1">// cppcheck-suppress operatorEqRetRefThis</span>
-<a name="line-145"></a> <span class="n">AlbumPointerList</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;&amp;</span> <span class="n">operator</span><span class="o">=</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">T</span><span class="o">*&gt;&amp;</span> <span class="n">list</span><span class="p">)</span>
-<a name="line-146"></a> <span class="p">{</span>
-<a name="line-147"></a> <span class="n">foreach</span> <span class="p">(</span><span class="n">T</span><span class="o">*</span> <span class="k">const</span> <span class="n">t</span><span class="p">,</span> <span class="n">list</span><span class="p">)</span>
-<a name="line-148"></a> <span class="p">{</span>
-<a name="line-149"></a> <span class="n">this</span><span class="o">-&gt;</span><span class="n">append</span><span class="p">(</span><span class="n">AlbumPointer</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="p">(</span><span class="n">t</span><span class="p">));</span>
-<a name="line-150"></a> <span class="p">}</span>
-<a name="line-151"></a>
-<a name="line-152"></a> <span class="k">return</span> <span class="o">*</span><span class="n">this</span><span class="p">;</span>
-<a name="line-153"></a> <span class="p">}</span>
-<a name="line-154"></a><span class="p">};</span>
-<a name="line-155"></a>
-<a name="line-156"></a><span class="p">}</span> <span class="c1">// namespace Digikam</span>
-<a name="line-157"></a>
-<a name="line-158"></a><span class="n">Q_DECLARE_METATYPE</span><span class="p">(</span><span class="n">Digikam</span><span class="o">::</span><span class="n">AlbumPointer</span><span class="o">&lt;&gt;</span><span class="p">)</span>
-<a name="line-159"></a><span class="n">Q_DECLARE_METATYPE</span><span class="p">(</span><span class="n">Digikam</span><span class="o">::</span><span class="n">AlbumPointer</span><span class="o">&lt;</span><span class="n">Digikam</span><span class="o">::</span><span class="n">PAlbum</span><span class="o">&gt;</span><span class="p">)</span>
-<a name="line-160"></a><span class="n">Q_DECLARE_METATYPE</span><span class="p">(</span><span class="n">Digikam</span><span class="o">::</span><span class="n">AlbumPointer</span><span class="o">&lt;</span><span class="n">Digikam</span><span class="o">::</span><span class="n">TAlbum</span><span class="o">&gt;</span><span class="p">)</span>
-<a name="line-161"></a><span class="n">Q_DECLARE_METATYPE</span><span class="p">(</span><span class="n">Digikam</span><span class="o">::</span><span class="n">AlbumPointer</span><span class="o">&lt;</span><span class="n">Digikam</span><span class="o">::</span><span class="n">SAlbum</span><span class="o">&gt;</span><span class="p">)</span>
-<a name="line-162"></a><span class="n">Q_DECLARE_METATYPE</span><span class="p">(</span><span class="n">Digikam</span><span class="o">::</span><span class="n">AlbumPointer</span><span class="o">&lt;</span><span class="n">Digikam</span><span class="o">::</span><span class="n">DAlbum</span><span class="o">&gt;</span><span class="p">)</span>
-<a name="line-163"></a><span class="n">Q_DECLARE_METATYPE</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">Digikam</span><span class="o">::</span><span class="n">TAlbum</span><span class="o">*&gt;</span><span class="p">)</span>
-<a name="line-164"></a>
-<a name="line-165"></a><span class="cp">#endif </span><span class="c1">// DIGIKAM_ALBUM_POINTER_H</span>
+<a name="line-121"></a><span class="n">QTEST_GUILESS_MAIN</span><span class="p">(</span><span class="n">TestSimpleTreeModel</span><span class="p">)</span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/16.html b/static/reports/cppcheck/master/16.html
index 9ddde0f11..9d1af5333 100644
--- a/static/reports/cppcheck/master/16.html
+++ b/static/reports/cppcheck/master/16.html
@@ -1,2631 +1,379 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/libs/dngwriter/dngwriter_convert.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/tests/mediawiki/logouttest.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> dngwriter_convert.cpp</p>
-<a href='16.html#line-273'> shadowVar 273</a><a href='16.html#line-273'> shadowVar 273</a><a href='16.html#line-923'> shadowVar 923</a><a href='16.html#line-1010'> shadowVar 1010</a>
+ <p id="filename"><a href="index.html">Defects:</a> logouttest.cpp</p>
+<a href='16.html#line-95'> shadowVar 95</a><a href='16.html#line-110'> shadowVar 110</a>
</div>
<div id="content">
-<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867
- 868
- 869
- 870
- 871
- 872
- 873
- 874
- 875
- 876
- 877
- 878
- 879
- 880
- 881
- 882
- 883
- 884
- 885
- 886
- 887
- 888
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- 896
- 897
- 898
- 899
- 900
- 901
- 902
- 903
- 904
- 905
- 906
- 907
- 908
- 909
- 910
- 911
- 912
- 913
- 914
- 915
- 916
- 917
- 918
- 919
- 920
- 921
- 922
- 923
- 924
- 925
- 926
- 927
- 928
- 929
- 930
- 931
- 932
- 933
- 934
- 935
- 936
- 937
- 938
- 939
- 940
- 941
- 942
- 943
- 944
- 945
- 946
- 947
- 948
- 949
- 950
- 951
- 952
- 953
- 954
- 955
- 956
- 957
- 958
- 959
- 960
- 961
- 962
- 963
- 964
- 965
- 966
- 967
- 968
- 969
- 970
- 971
- 972
- 973
- 974
- 975
- 976
- 977
- 978
- 979
- 980
- 981
- 982
- 983
- 984
- 985
- 986
- 987
- 988
- 989
- 990
- 991
- 992
- 993
- 994
- 995
- 996
- 997
- 998
- 999
-1000
-1001
-1002
-1003
-1004
-1005
-1006
-1007
-1008
-1009
-1010
-1011
-1012
-1013
-1014
-1015
-1016
-1017
-1018
-1019
-1020
-1021
-1022
-1023
-1024
-1025
-1026
-1027
-1028
-1029
-1030
-1031
-1032
-1033
-1034
-1035
-1036
-1037
-1038
-1039
-1040
-1041
-1042
-1043
-1044
-1045
-1046
-1047
-1048
-1049
-1050
-1051
-1052
-1053
-1054
-1055
-1056
-1057
-1058
-1059
-1060
-1061
-1062
-1063
-1064
-1065
-1066
-1067
-1068
-1069
-1070
-1071
-1072
-1073
-1074
-1075
-1076
-1077
-1078
-1079
-1080
-1081
-1082
-1083
-1084
-1085
-1086
-1087
-1088
-1089
-1090
-1091
-1092
-1093
-1094
-1095
-1096
-1097
-1098
-1099
-1100
-1101
-1102
-1103
-1104
-1105
-1106
-1107
-1108
-1109
-1110
-1111
-1112
-1113
-1114
-1115
-1116
-1117
-1118
-1119
-1120
-1121
-1122
-1123
-1124
-1125
-1126
-1127
-1128
-1129
-1130
-1131
-1132
-1133
-1134
-1135
-1136
-1137
-1138
-1139
-1140
-1141
-1142
-1143
-1144
-1145
-1146
-1147
-1148
-1149
-1150
-1151
-1152
-1153
-1154
-1155
-1156
-1157
-1158
-1159
-1160
-1161
-1162
-1163
-1164
-1165
-1166
-1167
-1168
-1169
-1170
-1171
-1172
-1173
-1174
-1175
-1176
-1177
-1178
-1179
-1180
-1181
-1182
-1183
-1184
-1185
-1186
-1187
-1188
-1189
-1190
-1191
-1192
-1193
-1194
-1195
-1196
-1197
-1198
-1199
-1200
-1201
-1202
-1203
-1204
-1205
-1206
-1207
-1208
-1209
-1210
-1211
-1212
-1213
-1214
-1215
-1216
-1217
-1218
-1219
-1220
-1221
-1222
-1223
-1224
-1225
-1226
-1227
-1228
-1229
-1230
-1231
-1232
-1233
-1234
-1235
-1236
-1237
-1238
-1239
-1240
-1241
-1242
-1243</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
+<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
-<a name="line-6"></a><span class="cm"> * Date : 2008-09-25</span>
-<a name="line-7"></a><span class="cm"> * Description : a tool to convert RAW file to DNG</span>
+<a name="line-6"></a><span class="cm"> * Date : 2011-03-22</span>
+<a name="line-7"></a><span class="cm"> * Description : a MediaWiki C++ interface</span>
<a name="line-8"></a><span class="cm"> *</span>
-<a name="line-9"></a><span class="cm"> * Copyright (C) 2008-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&gt;</span>
-<a name="line-10"></a><span class="cm"> * Copyright (C) 2010-2011 by Jens Mueller &lt;tschenser at gmx dot de&gt;</span>
-<a name="line-11"></a><span class="cm"> *</span>
-<a name="line-12"></a><span class="cm"> * This program is free software; you can redistribute it</span>
-<a name="line-13"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
-<a name="line-14"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
-<a name="line-15"></a><span class="cm"> * either version 2, or (at your option) any later version.</span>
-<a name="line-16"></a><span class="cm"> *</span>
-<a name="line-17"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
-<a name="line-18"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
-<a name="line-19"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
-<a name="line-20"></a><span class="cm"> * GNU General Public License for more details.</span>
-<a name="line-21"></a><span class="cm"> *</span>
-<a name="line-22"></a><span class="cm"> * ============================================================ */</span>
-<a name="line-23"></a>
-<a name="line-24"></a><span class="cp">#include</span> <span class="cpf">&quot;dngwriter_p.h&quot;</span><span class="cp"></span>
+<a name="line-9"></a><span class="cm"> * Copyright (C) 2011-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&gt;</span>
+<a name="line-10"></a><span class="cm"> * Copyright (C) 2011 by Alexandre Mendes &lt;alex dot mendes1988 at gmail dot com&gt;</span>
+<a name="line-11"></a><span class="cm"> * Copyright (C) 2011 by Hormiere Guillaume &lt;hormiere dot guillaume at gmail dot com&gt;</span>
+<a name="line-12"></a><span class="cm"> * Copyright (C) 2011 by Manuel Campomanes &lt;campomanes dot manuel at gmail dot com&gt;</span>
+<a name="line-13"></a><span class="cm"> *</span>
+<a name="line-14"></a><span class="cm"> * This program is free software; you can redistribute it</span>
+<a name="line-15"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
+<a name="line-16"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
+<a name="line-17"></a><span class="cm"> * either version 2, or (at your option) any later version.</span>
+<a name="line-18"></a><span class="cm"> *</span>
+<a name="line-19"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
+<a name="line-20"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
+<a name="line-21"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
+<a name="line-22"></a><span class="cm"> * GNU General Public License for more details.</span>
+<a name="line-23"></a><span class="cm"> *</span>
+<a name="line-24"></a><span class="cm"> * ============================================================ */</span>
<a name="line-25"></a>
-<a name="line-26"></a><span class="k">namespace</span> <span class="n">Digikam</span>
-<a name="line-27"></a><span class="p">{</span>
-<a name="line-28"></a>
-<a name="line-29"></a><span class="kt">int</span> <span class="n">DNGWriter</span><span class="o">::</span><span class="n">convert</span><span class="p">()</span>
-<a name="line-30"></a><span class="p">{</span>
-<a name="line-31"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cancel</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-26"></a><span class="c1">// Qt includes</span>
+<a name="line-27"></a>
+<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;QObject&gt;</span><span class="cp"></span>
+<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QtTest&gt;</span><span class="cp"></span>
+<a name="line-30"></a>
+<a name="line-31"></a><span class="c1">// KDE includes</span>
<a name="line-32"></a>
-<a name="line-33"></a> <span class="k">try</span>
-<a name="line-34"></a> <span class="p">{</span>
-<a name="line-35"></a> <span class="k">if</span> <span class="p">(</span><span class="n">inputFile</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-36"></a> <span class="p">{</span>
-<a name="line-37"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: No input file to convert. Aborted...&quot;</span> <span class="p">;</span>
-<a name="line-38"></a> <span class="k">return</span> <span class="n">PROCESSFAILED</span><span class="p">;</span>
-<a name="line-39"></a> <span class="p">}</span>
+<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;kjob.h&gt;</span><span class="cp"></span>
+<a name="line-34"></a>
+<a name="line-35"></a><span class="c1">// Local includes</span>
+<a name="line-36"></a>
+<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&quot;mediawiki_iface.h&quot;</span><span class="cp"></span>
+<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&quot;mediawiki_logout.h&quot;</span><span class="cp"></span>
+<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&quot;fakeserver/fakeserver.h&quot;</span><span class="cp"></span>
<a name="line-40"></a>
-<a name="line-41"></a> <span class="n">QFileInfo</span> <span class="n">inputInfo</span><span class="p">(</span><span class="n">inputFile</span><span class="p">());</span>
-<a name="line-42"></a> <span class="n">QString</span> <span class="n">dngFilePath</span> <span class="o">=</span> <span class="n">outputFile</span><span class="p">();</span>
+<a name="line-41"></a><span class="k">using</span> <span class="n">MediaWiki</span><span class="o">::</span><span class="n">Iface</span><span class="p">;</span>
+<a name="line-42"></a><span class="k">using</span> <span class="n">MediaWiki</span><span class="o">::</span><span class="n">Logout</span><span class="p">;</span>
<a name="line-43"></a>
-<a name="line-44"></a> <span class="k">if</span> <span class="p">(</span><span class="n">dngFilePath</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-45"></a> <span class="p">{</span>
-<a name="line-46"></a> <span class="n">dngFilePath</span> <span class="o">=</span> <span class="n">QString</span><span class="p">(</span><span class="n">inputInfo</span><span class="p">.</span><span class="n">completeBaseName</span><span class="p">()</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;.dng&quot;</span><span class="p">));</span>
-<a name="line-47"></a> <span class="p">}</span>
-<a name="line-48"></a>
-<a name="line-49"></a> <span class="n">QFileInfo</span> <span class="n">outputInfo</span><span class="p">(</span><span class="n">dngFilePath</span><span class="p">);</span>
-<a name="line-50"></a> <span class="n">QByteArray</span> <span class="n">rawData</span><span class="p">;</span>
-<a name="line-51"></a> <span class="n">DRawInfo</span> <span class="n">identify</span><span class="p">;</span>
-<a name="line-52"></a> <span class="n">DRawInfo</span> <span class="n">identifyMake</span><span class="p">;</span>
-<a name="line-53"></a>
-<a name="line-54"></a> <span class="c1">// -----------------------------------------------------------------------------------------</span>
-<a name="line-55"></a>
-<a name="line-56"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Loading RAW data from &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">inputInfo</span><span class="p">.</span><span class="n">fileName</span><span class="p">()</span> <span class="p">;</span>
-<a name="line-57"></a>
-<a name="line-58"></a> <span class="n">DRawDecoder</span> <span class="n">rawProcessor</span><span class="p">;</span>
-<a name="line-59"></a>
-<a name="line-60"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">rawProcessor</span><span class="p">.</span><span class="n">rawFileIdentify</span><span class="p">(</span><span class="n">identifyMake</span><span class="p">,</span> <span class="n">inputFile</span><span class="p">()))</span>
-<a name="line-61"></a> <span class="p">{</span>
-<a name="line-62"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Reading RAW file failed. Aborted...&quot;</span> <span class="p">;</span>
-<a name="line-63"></a> <span class="k">return</span> <span class="n">PROCESSFAILED</span><span class="p">;</span>
-<a name="line-64"></a> <span class="p">}</span>
-<a name="line-65"></a>
-<a name="line-66"></a> <span class="n">dng_rect</span> <span class="n">activeArea</span><span class="p">;</span>
-<a name="line-67"></a>
-<a name="line-68"></a> <span class="c1">// TODO: need to get correct default crop size to avoid artifacts at the borders</span>
-<a name="line-69"></a>
-<a name="line-70"></a> <span class="kt">int</span> <span class="n">activeWidth</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-71"></a> <span class="kt">int</span> <span class="n">activeHeight</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-72"></a> <span class="kt">int</span> <span class="n">outputHeight</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-73"></a> <span class="kt">int</span> <span class="n">outputWidth</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-44"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="nl">LogoutTest</span> <span class="p">:</span> <span class="k">public</span> <span class="n">QObject</span>
+<a name="line-45"></a><span class="p">{</span>
+<a name="line-46"></a> <span class="n">Q_OBJECT</span>
+<a name="line-47"></a>
+<a name="line-48"></a><span class="k">public</span><span class="o">:</span>
+<a name="line-49"></a>
+<a name="line-50"></a> <span class="n">LogoutTest</span><span class="p">()</span>
+<a name="line-51"></a> <span class="p">{</span>
+<a name="line-52"></a> <span class="n">logoutCount</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-53"></a> <span class="n">m_mediaWiki</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-54"></a> <span class="n">m_server</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-55"></a> <span class="p">}</span>
+<a name="line-56"></a>
+<a name="line-57"></a><span class="k">public</span> <span class="nl">Q_SLOTS</span><span class="p">:</span>
+<a name="line-58"></a>
+<a name="line-59"></a> <span class="kt">void</span> <span class="n">logoutHandle</span><span class="p">(</span><span class="n">KJob</span><span class="o">*</span> <span class="n">job</span><span class="p">)</span>
+<a name="line-60"></a> <span class="p">{</span>
+<a name="line-61"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">job</span><span class="p">)</span>
+<a name="line-62"></a> <span class="n">logoutCount</span><span class="o">++</span><span class="p">;</span>
+<a name="line-63"></a> <span class="p">}</span>
+<a name="line-64"></a>
+<a name="line-65"></a><span class="k">private</span> <span class="nl">Q_SLOTS</span><span class="p">:</span>
+<a name="line-66"></a>
+<a name="line-67"></a> <span class="kt">void</span> <span class="n">initTestCase</span><span class="p">()</span>
+<a name="line-68"></a> <span class="p">{</span>
+<a name="line-69"></a> <span class="n">logoutCount</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-70"></a> <span class="k">this</span><span class="o">-&gt;</span><span class="n">m_mediaWiki</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Iface</span><span class="p">(</span><span class="n">QUrl</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;http://127.0.0.1:12566&quot;</span><span class="p">)));</span>
+<a name="line-71"></a> <span class="k">this</span><span class="o">-&gt;</span><span class="n">m_server</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FakeServer</span><span class="p">;</span>
+<a name="line-72"></a> <span class="k">this</span><span class="o">-&gt;</span><span class="n">request</span> <span class="o">=</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;/?format=xml&amp;action=logout&quot;</span><span class="p">);</span>
+<a name="line-73"></a> <span class="p">}</span>
<a name="line-74"></a>
-<a name="line-75"></a> <span class="k">if</span> <span class="p">((</span><span class="n">identifyMake</span><span class="p">.</span><span class="n">orientation</span> <span class="o">==</span> <span class="mi">5</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">identifyMake</span><span class="p">.</span><span class="n">orientation</span> <span class="o">==</span> <span class="mi">6</span><span class="p">))</span>
-<a name="line-76"></a> <span class="p">{</span>
-<a name="line-77"></a> <span class="n">outputHeight</span> <span class="o">=</span> <span class="n">identifyMake</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">width</span><span class="p">();</span>
-<a name="line-78"></a> <span class="n">outputWidth</span> <span class="o">=</span> <span class="n">identifyMake</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
-<a name="line-79"></a> <span class="p">}</span>
-<a name="line-80"></a> <span class="k">else</span>
-<a name="line-81"></a> <span class="p">{</span>
-<a name="line-82"></a> <span class="n">outputHeight</span> <span class="o">=</span> <span class="n">identifyMake</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
-<a name="line-83"></a> <span class="n">outputWidth</span> <span class="o">=</span> <span class="n">identifyMake</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">width</span><span class="p">();</span>
-<a name="line-84"></a> <span class="p">}</span>
-<a name="line-85"></a>
-<a name="line-86"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">rawProcessor</span><span class="p">.</span><span class="n">extractRAWData</span><span class="p">(</span><span class="n">inputFile</span><span class="p">(),</span> <span class="n">rawData</span><span class="p">,</span> <span class="n">identify</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
-<a name="line-87"></a> <span class="p">{</span>
-<a name="line-88"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Loading RAW data failed. Aborted...&quot;</span> <span class="p">;</span>
-<a name="line-89"></a> <span class="k">return</span> <span class="n">FILENOTSUPPORTED</span><span class="p">;</span>
-<a name="line-90"></a> <span class="p">}</span>
+<a name="line-75"></a> <span class="kt">void</span> <span class="n">logoutTestConnectTrue</span><span class="p">()</span>
+<a name="line-76"></a> <span class="p">{</span>
+<a name="line-77"></a> <span class="n">QString</span> <span class="n">senario</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;&lt;api /&gt;&quot;</span><span class="p">)</span> <span class="p">);</span>
+<a name="line-78"></a> <span class="n">QString</span> <span class="nf">cookie</span><span class="p">(</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;cookieprefix=</span><span class="se">\&quot;</span><span class="s">enwiki</span><span class="se">\&quot;</span><span class="s"> sessionid=</span><span class="se">\&quot;</span><span class="s">17ab96bd8ffbe8ca58a78657a918558e</span><span class="se">\&quot;</span><span class="s"> expires=</span><span class="se">\&quot;</span><span class="s">Sat, 12-Feb-2011 21:39:30 GMT</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">));</span>
+<a name="line-79"></a> <span class="n">m_server</span><span class="o">-&gt;</span><span class="n">setScenario</span><span class="p">(</span><span class="n">senario</span><span class="p">,</span> <span class="n">cookie</span><span class="p">);</span>
+<a name="line-80"></a> <span class="n">m_server</span><span class="o">-&gt;</span><span class="n">startAndWait</span><span class="p">();</span>
+<a name="line-81"></a>
+<a name="line-82"></a> <span class="n">logoutCount</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-83"></a> <span class="n">Logout</span> <span class="nf">logout</span><span class="p">(</span><span class="o">*</span><span class="n">m_mediaWiki</span><span class="p">);</span>
+<a name="line-84"></a>
+<a name="line-85"></a> <span class="n">connect</span><span class="p">(</span><span class="o">&amp;</span><span class="n">logout</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">result</span><span class="p">(</span><span class="n">KJob</span><span class="o">*</span><span class="p">)),</span>
+<a name="line-86"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">logoutHandle</span><span class="p">(</span><span class="n">KJob</span><span class="o">*</span><span class="p">)));</span>
+<a name="line-87"></a>
+<a name="line-88"></a> <span class="n">logout</span><span class="p">.</span><span class="n">exec</span><span class="p">();</span> <span class="c1">// krazy:exclude=crashy</span>
+<a name="line-89"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="k">this</span><span class="o">-&gt;</span><span class="n">logoutCount</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-90"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">logout</span><span class="p">.</span><span class="n">error</span><span class="p">(),</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">Logout</span><span class="o">::</span><span class="n">NoError</span><span class="p">);</span>
<a name="line-91"></a>
-<a name="line-92"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">)</span>
-<a name="line-93"></a> <span class="p">{</span>
-<a name="line-94"></a> <span class="k">return</span> <span class="n">PROCESSCANCELED</span><span class="p">;</span>
-<a name="line-95"></a> <span class="p">}</span>
-<a name="line-96"></a>
-<a name="line-97"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Raw data loaded:&quot;</span> <span class="p">;</span>
-<a name="line-98"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- Data Size: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">rawData</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; bytes&quot;</span><span class="p">;</span>
-<a name="line-99"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- Date: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">dateTime</span><span class="p">.</span><span class="n">toString</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">ISODate</span><span class="p">);</span>
-<a name="line-100"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- Make: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">make</span><span class="p">;</span>
-<a name="line-101"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- Model: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">model</span><span class="p">;</span>
-<a name="line-102"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- ImageSize: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">imageSize</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;x&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">imageSize</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
-<a name="line-103"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- FullSize: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">fullSize</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;x&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">fullSize</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
-<a name="line-104"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- OutputSize: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;x&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
-<a name="line-105"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- Orientation: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">orientation</span><span class="p">;</span>
-<a name="line-106"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- Top margin: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">topMargin</span><span class="p">;</span>
-<a name="line-107"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- Left margin: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">leftMargin</span><span class="p">;</span>
-<a name="line-108"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- Filter: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span><span class="p">;</span>
-<a name="line-109"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- Colors: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">rawColors</span><span class="p">;</span>
-<a name="line-110"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- Black: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">blackPoint</span><span class="p">;</span>
-<a name="line-111"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- White: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">whitePoint</span><span class="p">;</span>
-<a name="line-112"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;--- CAM-&gt;XYZ:&quot;</span> <span class="p">;</span>
-<a name="line-113"></a>
-<a name="line-114"></a> <span class="n">QString</span> <span class="n">matrixVal</span><span class="p">;</span>
-<a name="line-115"></a>
-<a name="line-116"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">4</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-117"></a> <span class="p">{</span>
-<a name="line-118"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; &quot;</span>
-<a name="line-119"></a> <span class="o">&lt;&lt;</span> <span class="n">QString</span><span class="p">().</span><span class="n">asprintf</span><span class="p">(</span><span class="s">&quot;%03.4f %03.4f %03.4f&quot;</span><span class="p">,</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span>
-<a name="line-120"></a> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">1</span><span class="p">],</span>
-<a name="line-121"></a> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">2</span><span class="p">]);</span>
-<a name="line-122"></a> <span class="p">}</span>
-<a name="line-123"></a>
-<a name="line-124"></a> <span class="c1">// Check if CFA layout is supported by DNG SDK.</span>
-<a name="line-125"></a>
-<a name="line-126"></a> <span class="n">Private</span><span class="o">::</span><span class="n">DNGBayerPattern</span> <span class="n">bayerPattern</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">Unknown</span><span class="p">;</span>
-<a name="line-127"></a> <span class="n">uint32</span> <span class="n">filter</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-128"></a> <span class="kt">bool</span> <span class="n">fujiRotate90</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-129"></a>
-<a name="line-130"></a> <span class="c1">// Standard bayer layouts</span>
-<a name="line-131"></a>
-<a name="line-132"></a> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;GRBGGRBGGRBGGRBG&quot;</span><span class="p">))</span>
-<a name="line-133"></a> <span class="p">{</span>
-<a name="line-134"></a> <span class="n">bayerPattern</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">Standard</span><span class="p">;</span>
-<a name="line-135"></a> <span class="n">filter</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-136"></a> <span class="p">}</span>
-<a name="line-137"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;RGGBRGGBRGGBRGGB&quot;</span><span class="p">))</span>
-<a name="line-138"></a> <span class="p">{</span>
-<a name="line-139"></a> <span class="n">bayerPattern</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">Standard</span><span class="p">;</span>
-<a name="line-140"></a> <span class="n">filter</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-141"></a> <span class="p">}</span>
-<a name="line-142"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;BGGRBGGRBGGRBGGR&quot;</span><span class="p">))</span>
-<a name="line-143"></a> <span class="p">{</span>
-<a name="line-144"></a> <span class="n">bayerPattern</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">Standard</span><span class="p">;</span>
-<a name="line-145"></a> <span class="n">filter</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
-<a name="line-146"></a> <span class="p">}</span>
-<a name="line-147"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;GBRGGBRGGBRGGBRG&quot;</span><span class="p">))</span>
-<a name="line-148"></a> <span class="p">{</span>
-<a name="line-149"></a> <span class="n">bayerPattern</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">Standard</span><span class="p">;</span>
-<a name="line-150"></a> <span class="n">filter</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
-<a name="line-151"></a> <span class="p">}</span>
-<a name="line-152"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;RGBGRGBGRGBGRGBG&quot;</span><span class="p">))</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">identifyMake</span><span class="p">.</span><span class="n">make</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;FUJIFILM&quot;</span><span class="p">)))</span>
-<a name="line-153"></a> <span class="p">{</span>
-<a name="line-154"></a> <span class="c1">// Fuji layouts</span>
-<a name="line-155"></a>
-<a name="line-156"></a> <span class="n">bayerPattern</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">Fuji</span><span class="p">;</span>
-<a name="line-157"></a> <span class="n">fujiRotate90</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-158"></a> <span class="n">filter</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-159"></a> <span class="p">}</span>
-<a name="line-160"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;RBGGBRGGRBGGBRGG&quot;</span><span class="p">))</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">identifyMake</span><span class="p">.</span><span class="n">make</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;FUJIFILM&quot;</span><span class="p">)))</span>
-<a name="line-161"></a> <span class="p">{</span>
-<a name="line-162"></a> <span class="c1">// Fuji layouts</span>
-<a name="line-163"></a>
-<a name="line-164"></a> <span class="n">bayerPattern</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">Fuji</span><span class="p">;</span>
-<a name="line-165"></a> <span class="n">fujiRotate90</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-166"></a> <span class="n">filter</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-167"></a> <span class="p">}</span>
-<a name="line-168"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">identify</span><span class="p">.</span><span class="n">rawColors</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
-<a name="line-169"></a> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="o">&amp;&amp;</span>
-<a name="line-170"></a><span class="cm">/*</span>
-<a name="line-171"></a><span class="cm"> (identify.filterPattern == QString(&quot;&quot;)) &amp;&amp;</span>
-<a name="line-172"></a><span class="cm">*/</span>
-<a name="line-173"></a> <span class="p">((</span><span class="n">uint32</span><span class="p">)</span><span class="n">rawData</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">==</span> <span class="n">identify</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">*</span> <span class="n">identify</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">*</span> <span class="mi">3</span> <span class="o">*</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">uint16</span><span class="p">)))</span>
-<a name="line-174"></a> <span class="p">{</span>
-<a name="line-175"></a> <span class="n">bayerPattern</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">LinearRaw</span><span class="p">;</span>
-<a name="line-176"></a> <span class="p">}</span>
-<a name="line-177"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">rawColors</span> <span class="o">==</span> <span class="mi">4</span><span class="p">)</span> <span class="c1">// Four color sensors</span>
-<a name="line-178"></a> <span class="p">{</span>
-<a name="line-179"></a> <span class="n">bayerPattern</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">FourColor</span><span class="p">;</span>
-<a name="line-180"></a>
-<a name="line-181"></a> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span><span class="p">.</span><span class="n">length</span><span class="p">()</span> <span class="o">!=</span> <span class="mi">16</span><span class="p">)</span>
-<a name="line-182"></a> <span class="p">{</span>
-<a name="line-183"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Bayer mosaic not supported. Aborted...&quot;</span> <span class="p">;</span>
-<a name="line-184"></a> <span class="k">return</span> <span class="n">FILENOTSUPPORTED</span><span class="p">;</span>
-<a name="line-185"></a> <span class="p">}</span>
-<a name="line-186"></a>
-<a name="line-187"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">16</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-188"></a> <span class="p">{</span>
-<a name="line-189"></a> <span class="n">filter</span> <span class="o">=</span> <span class="n">filter</span> <span class="o">&gt;&gt;</span> <span class="mi">2</span><span class="p">;</span>
-<a name="line-190"></a>
-<a name="line-191"></a> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;G&#39;</span><span class="p">))</span>
-<a name="line-192"></a> <span class="p">{</span>
-<a name="line-193"></a> <span class="n">filter</span> <span class="o">|=</span> <span class="mh">0x00000000</span><span class="p">;</span>
-<a name="line-194"></a> <span class="p">}</span>
-<a name="line-195"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;M&#39;</span><span class="p">))</span>
-<a name="line-196"></a> <span class="p">{</span>
-<a name="line-197"></a> <span class="n">filter</span> <span class="o">|=</span> <span class="mh">0x40000000</span><span class="p">;</span>
-<a name="line-198"></a> <span class="p">}</span>
-<a name="line-199"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;C&#39;</span><span class="p">))</span>
-<a name="line-200"></a> <span class="p">{</span>
-<a name="line-201"></a> <span class="n">filter</span> <span class="o">|=</span> <span class="mh">0x80000000</span><span class="p">;</span>
-<a name="line-202"></a> <span class="p">}</span>
-<a name="line-203"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">filterPattern</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;Y&#39;</span><span class="p">))</span>
-<a name="line-204"></a> <span class="p">{</span>
-<a name="line-205"></a> <span class="n">filter</span> <span class="o">|=</span> <span class="mh">0xC0000000</span><span class="p">;</span>
-<a name="line-206"></a> <span class="p">}</span>
-<a name="line-207"></a> <span class="k">else</span>
-<a name="line-208"></a> <span class="p">{</span>
-<a name="line-209"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Bayer mosaic not supported. Aborted...&quot;</span> <span class="p">;</span>
-<a name="line-210"></a> <span class="k">return</span> <span class="n">FILENOTSUPPORTED</span><span class="p">;</span>
-<a name="line-211"></a> <span class="p">}</span>
-<a name="line-212"></a> <span class="p">}</span>
-<a name="line-213"></a> <span class="p">}</span>
-<a name="line-214"></a> <span class="k">else</span>
-<a name="line-215"></a> <span class="p">{</span>
-<a name="line-216"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Bayer mosaic not supported. Aborted...&quot;</span> <span class="p">;</span>
-<a name="line-217"></a> <span class="k">return</span> <span class="n">FILENOTSUPPORTED</span><span class="p">;</span>
-<a name="line-218"></a> <span class="p">}</span>
-<a name="line-219"></a>
-<a name="line-220"></a> <span class="k">if</span> <span class="p">(</span><span class="n">fujiRotate90</span><span class="p">)</span>
-<a name="line-221"></a> <span class="p">{</span>
-<a name="line-222"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fujiRotate</span><span class="p">(</span><span class="n">rawData</span><span class="p">,</span> <span class="n">identify</span><span class="p">))</span>
-<a name="line-223"></a> <span class="p">{</span>
-<a name="line-224"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Can not rotate fuji image. Aborted...&quot;</span><span class="p">;</span>
-<a name="line-225"></a> <span class="k">return</span> <span class="n">PROCESSFAILED</span><span class="p">;</span>
-<a name="line-226"></a> <span class="p">}</span>
-<a name="line-227"></a>
-<a name="line-228"></a> <span class="kt">int</span> <span class="n">tmp</span> <span class="o">=</span> <span class="n">outputWidth</span><span class="p">;</span>
-<a name="line-229"></a> <span class="n">outputWidth</span> <span class="o">=</span> <span class="n">outputHeight</span><span class="p">;</span>
-<a name="line-230"></a> <span class="n">outputHeight</span> <span class="o">=</span> <span class="n">tmp</span><span class="p">;</span>
-<a name="line-231"></a> <span class="p">}</span>
-<a name="line-232"></a>
-<a name="line-233"></a> <span class="n">activeArea</span> <span class="o">=</span> <span class="n">dng_rect</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">height</span><span class="p">(),</span> <span class="n">identify</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">width</span><span class="p">());</span>
-<a name="line-234"></a> <span class="n">activeWidth</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">width</span><span class="p">();</span>
-<a name="line-235"></a> <span class="n">activeHeight</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
-<a name="line-236"></a>
-<a name="line-237"></a> <span class="c1">// Check if number of Raw Color components is supported.</span>
-<a name="line-238"></a>
-<a name="line-239"></a> <span class="k">if</span> <span class="p">((</span><span class="n">identify</span><span class="p">.</span><span class="n">rawColors</span> <span class="o">!=</span> <span class="mi">3</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">rawColors</span> <span class="o">!=</span> <span class="mi">4</span><span class="p">))</span>
-<a name="line-240"></a> <span class="p">{</span>
-<a name="line-241"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Number of Raw color components not supported. Aborted...&quot;</span> <span class="p">;</span>
-<a name="line-242"></a> <span class="k">return</span> <span class="n">PROCESSFAILED</span><span class="p">;</span>
-<a name="line-243"></a> <span class="p">}</span>
-<a name="line-244"></a>
-<a name="line-245"></a> <span class="kt">int</span> <span class="n">width</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">width</span><span class="p">();</span>
-<a name="line-246"></a> <span class="kt">int</span> <span class="n">height</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">outputSize</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
-<a name="line-247"></a>
-<a name="line-248"></a><span class="cm">/*</span>
-<a name="line-249"></a><span class="cm"> // NOTE: code to hack RAW data extraction</span>
-<a name="line-250"></a>
-<a name="line-251"></a><span class="cm"> QString rawdataFilePath(inputInfo.completeBaseName() + QString(&quot;.dat&quot;));</span>
-<a name="line-252"></a><span class="cm"> QFileInfo rawdataInfo(rawdataFilePath);</span>
-<a name="line-253"></a>
-<a name="line-254"></a><span class="cm"> QFile rawdataFile(rawdataFilePath);</span>
-<a name="line-255"></a><span class="cm"> if (!rawdataFile.open(QIODevice::WriteOnly))</span>
-<a name="line-256"></a><span class="cm"> {</span>
-<a name="line-257"></a><span class="cm"> qCDebug(DIGIKAM_GENERAL_LOG) &lt;&lt; &quot;DNGWriter: Cannot open file to write RAW data. Aborted...&quot; ;</span>
-<a name="line-258"></a><span class="cm"> return PROCESSFAILED;</span>
-<a name="line-259"></a><span class="cm"> }</span>
-<a name="line-260"></a><span class="cm"> QDataStream rawdataStream(&amp;rawdataFile);</span>
-<a name="line-261"></a><span class="cm"> rawdataStream.writeRawData(rawData.data(), rawData.size());</span>
-<a name="line-262"></a><span class="cm"> rawdataFile.close();</span>
-<a name="line-263"></a><span class="cm">*/</span>
-<a name="line-264"></a> <span class="c1">// -----------------------------------------------------------------------------------------</span>
-<a name="line-265"></a>
-<a name="line-266"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">)</span>
-<a name="line-267"></a> <span class="p">{</span>
-<a name="line-268"></a> <span class="k">return</span> <span class="n">PROCESSCANCELED</span><span class="p">;</span>
-<a name="line-269"></a> <span class="p">}</span>
-<a name="line-270"></a>
-<a name="line-271"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: DNG memory allocation and initialization&quot;</span> <span class="p">;</span>
-<a name="line-272"></a>
-<a name="line-273"></a><span class="hll"> <span class="n">dng_memory_allocator</span> <span class="nf">memalloc</span><span class="p">(</span><span class="n">gDefaultDNGMemoryAllocator</span><span class="p">);</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span>
-</span><a name="line-274"></a>
-<a name="line-275"></a> <span class="n">dng_rect</span> <span class="nf">rect</span><span class="p">(</span><span class="n">height</span><span class="p">,</span> <span class="n">width</span><span class="p">);</span>
-<a name="line-276"></a> <span class="n">DNGWriterHost</span> <span class="nf">host</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">memalloc</span><span class="p">);</span>
-<a name="line-277"></a>
-<a name="line-278"></a> <span class="n">host</span><span class="p">.</span><span class="n">SetSaveDNGVersion</span><span class="p">(</span><span class="n">dngVersion_SaveDefault</span><span class="p">);</span>
-<a name="line-279"></a> <span class="n">host</span><span class="p">.</span><span class="n">SetSaveLinearDNG</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-280"></a> <span class="n">host</span><span class="p">.</span><span class="n">SetKeepOriginalFile</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-281"></a>
-<a name="line-282"></a> <span class="n">AutoPtr</span><span class="o">&lt;</span><span class="n">dng_image</span><span class="o">&gt;</span> <span class="n">image</span><span class="p">(</span><span class="k">new</span> <span class="n">dng_simple_image</span><span class="p">(</span><span class="n">rect</span><span class="p">,</span> <span class="p">(</span><span class="n">bayerPattern</span> <span class="o">==</span> <span class="n">Private</span><span class="o">::</span><span class="n">LinearRaw</span><span class="p">)</span> <span class="o">?</span> <span class="mi">3</span> <span class="o">:</span> <span class="mi">1</span><span class="p">,</span> <span class="n">ttShort</span><span class="p">,</span> <span class="n">memalloc</span><span class="p">));</span>
-<a name="line-283"></a>
-<a name="line-284"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">)</span>
-<a name="line-285"></a> <span class="p">{</span>
-<a name="line-286"></a> <span class="k">return</span> <span class="n">PROCESSCANCELED</span><span class="p">;</span>
-<a name="line-287"></a> <span class="p">}</span>
-<a name="line-288"></a>
-<a name="line-289"></a> <span class="c1">// -----------------------------------------------------------------------------------------</span>
-<a name="line-290"></a>
-<a name="line-291"></a> <span class="n">dng_pixel_buffer</span> <span class="n">buffer</span><span class="p">;</span>
-<a name="line-292"></a>
-<a name="line-293"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">fArea</span> <span class="o">=</span> <span class="n">rect</span><span class="p">;</span>
-<a name="line-294"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">fPlane</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-295"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">fPlanes</span> <span class="o">=</span> <span class="n">bayerPattern</span> <span class="o">==</span> <span class="n">Private</span><span class="o">::</span><span class="n">LinearRaw</span> <span class="o">?</span> <span class="mi">3</span> <span class="o">:</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-296"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">fRowStep</span> <span class="o">=</span> <span class="n">buffer</span><span class="p">.</span><span class="n">fPlanes</span> <span class="o">*</span> <span class="n">width</span><span class="p">;</span>
-<a name="line-297"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">fColStep</span> <span class="o">=</span> <span class="n">buffer</span><span class="p">.</span><span class="n">fPlanes</span><span class="p">;</span>
-<a name="line-298"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">fPlaneStep</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-299"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">fPixelType</span> <span class="o">=</span> <span class="n">ttShort</span><span class="p">;</span>
-<a name="line-300"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">fPixelSize</span> <span class="o">=</span> <span class="n">TagTypeSize</span><span class="p">(</span><span class="n">ttShort</span><span class="p">);</span>
-<a name="line-301"></a> <span class="n">buffer</span><span class="p">.</span><span class="n">fData</span> <span class="o">=</span> <span class="n">rawData</span><span class="p">.</span><span class="n">data</span><span class="p">();</span>
-<a name="line-302"></a> <span class="n">image</span><span class="o">-&gt;</span><span class="n">Put</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
-<a name="line-303"></a>
-<a name="line-304"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">)</span>
-<a name="line-305"></a> <span class="p">{</span>
-<a name="line-306"></a> <span class="k">return</span> <span class="n">PROCESSCANCELED</span><span class="p">;</span>
-<a name="line-307"></a> <span class="p">}</span>
-<a name="line-308"></a>
-<a name="line-309"></a> <span class="c1">// -----------------------------------------------------------------------------------------</span>
-<a name="line-310"></a>
-<a name="line-311"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: DNG Negative structure creation&quot;</span> <span class="p">;</span>
-<a name="line-312"></a>
-<a name="line-313"></a> <span class="n">AutoPtr</span><span class="o">&lt;</span><span class="n">dng_negative</span><span class="o">&gt;</span> <span class="n">negative</span><span class="p">(</span><span class="n">host</span><span class="p">.</span><span class="n">Make_dng_negative</span><span class="p">());</span>
-<a name="line-314"></a>
-<a name="line-315"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetDefaultScale</span><span class="p">(</span><span class="n">dng_urational</span><span class="p">(</span><span class="n">outputWidth</span><span class="p">,</span> <span class="n">activeWidth</span><span class="p">),</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">outputHeight</span><span class="p">,</span> <span class="n">activeHeight</span><span class="p">));</span>
-<a name="line-316"></a>
-<a name="line-317"></a> <span class="k">if</span> <span class="p">(</span><span class="n">bayerPattern</span> <span class="o">!=</span> <span class="n">Private</span><span class="o">::</span><span class="n">LinearRaw</span><span class="p">)</span>
-<a name="line-318"></a> <span class="p">{</span>
-<a name="line-319"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetDefaultCropOrigin</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">8</span><span class="p">);</span>
-<a name="line-320"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetDefaultCropSize</span><span class="p">(</span><span class="n">activeWidth</span> <span class="o">-</span> <span class="mi">16</span><span class="p">,</span> <span class="n">activeHeight</span> <span class="o">-</span> <span class="mi">16</span><span class="p">);</span>
-<a name="line-321"></a> <span class="p">}</span>
-<a name="line-322"></a> <span class="k">else</span>
-<a name="line-323"></a> <span class="p">{</span>
-<a name="line-324"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetDefaultCropOrigin</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-325"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetDefaultCropSize</span><span class="p">(</span><span class="n">activeWidth</span><span class="p">,</span> <span class="n">activeHeight</span><span class="p">);</span>
-<a name="line-326"></a> <span class="p">}</span>
-<a name="line-327"></a>
-<a name="line-328"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetActiveArea</span><span class="p">(</span><span class="n">activeArea</span><span class="p">);</span>
-<a name="line-329"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetModelName</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">model</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-330"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetLocalName</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1 %2&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">make</span><span class="p">,</span> <span class="n">identify</span><span class="p">.</span><span class="n">model</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-331"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetOriginalRawFileName</span><span class="p">(</span><span class="n">inputInfo</span><span class="p">.</span><span class="n">fileName</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-332"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetColorChannels</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">rawColors</span><span class="p">);</span>
-<a name="line-333"></a>
-<a name="line-334"></a> <span class="n">ColorKeyCode</span> <span class="n">colorCodes</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> <span class="n">colorKeyMaxEnum</span><span class="p">,</span> <span class="n">colorKeyMaxEnum</span><span class="p">,</span> <span class="n">colorKeyMaxEnum</span><span class="p">,</span> <span class="n">colorKeyMaxEnum</span> <span class="p">};</span>
-<a name="line-335"></a>
-<a name="line-336"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">qMax</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">identify</span><span class="p">.</span><span class="n">colorKeys</span><span class="p">.</span><span class="n">length</span><span class="p">())</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-337"></a> <span class="p">{</span>
-<a name="line-338"></a> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">colorKeys</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;R&#39;</span><span class="p">))</span>
-<a name="line-339"></a> <span class="p">{</span>
-<a name="line-340"></a> <span class="n">colorCodes</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">colorKeyRed</span><span class="p">;</span>
-<a name="line-341"></a> <span class="p">}</span>
-<a name="line-342"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">colorKeys</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;G&#39;</span><span class="p">))</span>
-<a name="line-343"></a> <span class="p">{</span>
-<a name="line-344"></a> <span class="n">colorCodes</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">colorKeyGreen</span><span class="p">;</span>
-<a name="line-345"></a> <span class="p">}</span>
-<a name="line-346"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">colorKeys</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;B&#39;</span><span class="p">))</span>
-<a name="line-347"></a> <span class="p">{</span>
-<a name="line-348"></a> <span class="n">colorCodes</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">colorKeyBlue</span><span class="p">;</span>
-<a name="line-349"></a> <span class="p">}</span>
-<a name="line-350"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">colorKeys</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;C&#39;</span><span class="p">))</span>
-<a name="line-351"></a> <span class="p">{</span>
-<a name="line-352"></a> <span class="n">colorCodes</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">colorKeyCyan</span><span class="p">;</span>
-<a name="line-353"></a> <span class="p">}</span>
-<a name="line-354"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">colorKeys</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;M&#39;</span><span class="p">))</span>
-<a name="line-355"></a> <span class="p">{</span>
-<a name="line-356"></a> <span class="n">colorCodes</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">colorKeyMagenta</span><span class="p">;</span>
-<a name="line-357"></a> <span class="p">}</span>
-<a name="line-358"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">colorKeys</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;Y&#39;</span><span class="p">))</span>
-<a name="line-359"></a> <span class="p">{</span>
-<a name="line-360"></a> <span class="n">colorCodes</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">colorKeyYellow</span><span class="p">;</span>
-<a name="line-361"></a> <span class="p">}</span>
-<a name="line-362"></a> <span class="p">}</span>
-<a name="line-363"></a>
-<a name="line-364"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetColorKeys</span><span class="p">(</span><span class="n">colorCodes</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">colorCodes</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">colorCodes</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">colorCodes</span><span class="p">[</span><span class="mi">3</span><span class="p">]);</span>
-<a name="line-365"></a>
-<a name="line-366"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">bayerPattern</span><span class="p">)</span>
-<a name="line-367"></a> <span class="p">{</span>
-<a name="line-368"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">Standard</span><span class="p">:</span>
-<a name="line-369"></a> <span class="c1">// Standard bayer mosaicing. All work fine there.</span>
-<a name="line-370"></a> <span class="c1">// Bayer CCD mask: https://en.wikipedia.org/wiki/Bayer_filter</span>
-<a name="line-371"></a>
-<a name="line-372"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetBayerMosaic</span><span class="p">(</span><span class="n">filter</span><span class="p">);</span>
-<a name="line-373"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-374"></a>
-<a name="line-375"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">Fuji</span><span class="p">:</span>
-<a name="line-376"></a> <span class="c1">// TODO: Fuji is special case. Need to setup different bayer rules here.</span>
-<a name="line-377"></a> <span class="c1">// It do not work in all settings. Need indeep investiguations.</span>
-<a name="line-378"></a> <span class="c1">// Fuji superCCD: https://en.wikipedia.org/wiki/Super_CCD</span>
-<a name="line-379"></a>
-<a name="line-380"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetFujiMosaic</span><span class="p">(</span><span class="n">filter</span><span class="p">);</span>
-<a name="line-381"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-382"></a>
-<a name="line-383"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">FourColor</span><span class="p">:</span>
-<a name="line-384"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetQuadMosaic</span><span class="p">(</span><span class="n">filter</span><span class="p">);</span>
-<a name="line-385"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-386"></a>
-<a name="line-387"></a> <span class="k">default</span><span class="o">:</span>
-<a name="line-388"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-389"></a> <span class="p">}</span>
-<a name="line-390"></a>
-<a name="line-391"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetWhiteLevel</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">whitePoint</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-392"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetWhiteLevel</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">whitePoint</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-393"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetWhiteLevel</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">whitePoint</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
-<a name="line-394"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetWhiteLevel</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">whitePoint</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-395"></a>
-<a name="line-396"></a> <span class="k">const</span> <span class="n">dng_mosaic_info</span><span class="o">*</span> <span class="k">const</span> <span class="n">mosaicinfo</span> <span class="o">=</span> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">GetMosaicInfo</span><span class="p">();</span>
-<a name="line-397"></a>
-<a name="line-398"></a> <span class="k">if</span> <span class="p">((</span><span class="n">mosaicinfo</span> <span class="o">!=</span> <span class="k">nullptr</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">mosaicinfo</span><span class="o">-&gt;</span><span class="n">fCFAPatternSize</span> <span class="o">==</span> <span class="n">dng_point</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">)))</span>
-<a name="line-399"></a> <span class="p">{</span>
-<a name="line-400"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetQuadBlacks</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">blackPoint</span> <span class="o">+</span> <span class="n">identify</span><span class="p">.</span><span class="n">blackPointCh</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
-<a name="line-401"></a> <span class="n">identify</span><span class="p">.</span><span class="n">blackPoint</span> <span class="o">+</span> <span class="n">identify</span><span class="p">.</span><span class="n">blackPointCh</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span>
-<a name="line-402"></a> <span class="n">identify</span><span class="p">.</span><span class="n">blackPoint</span> <span class="o">+</span> <span class="n">identify</span><span class="p">.</span><span class="n">blackPointCh</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span>
-<a name="line-403"></a> <span class="n">identify</span><span class="p">.</span><span class="n">blackPoint</span> <span class="o">+</span> <span class="n">identify</span><span class="p">.</span><span class="n">blackPointCh</span><span class="p">[</span><span class="mi">3</span><span class="p">]);</span>
-<a name="line-404"></a> <span class="p">}</span>
-<a name="line-405"></a> <span class="k">else</span>
-<a name="line-406"></a> <span class="p">{</span>
-<a name="line-407"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetBlackLevel</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">blackPoint</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-408"></a> <span class="p">}</span>
-<a name="line-409"></a>
-<a name="line-410"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetBaselineExposure</span><span class="p">(</span><span class="mf">0.0</span><span class="p">);</span>
-<a name="line-411"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetBaselineNoise</span><span class="p">(</span><span class="mf">1.0</span><span class="p">);</span>
-<a name="line-412"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetBaselineSharpness</span><span class="p">(</span><span class="mf">1.0</span><span class="p">);</span>
-<a name="line-413"></a>
-<a name="line-414"></a> <span class="n">dng_orientation</span> <span class="n">orientation</span><span class="p">;</span>
-<a name="line-415"></a>
-<a name="line-416"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">orientation</span><span class="p">)</span>
-<a name="line-417"></a> <span class="p">{</span>
-<a name="line-418"></a> <span class="k">case</span> <span class="n">DRawInfo</span><span class="o">::</span><span class="nl">ORIENTATION_180</span><span class="p">:</span>
-<a name="line-419"></a> <span class="n">orientation</span> <span class="o">=</span> <span class="n">dng_orientation</span><span class="o">::</span><span class="n">Rotate180</span><span class="p">();</span>
-<a name="line-420"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-421"></a>
-<a name="line-422"></a> <span class="k">case</span> <span class="n">DRawInfo</span><span class="o">::</span><span class="nl">ORIENTATION_Mirror90CCW</span><span class="p">:</span>
-<a name="line-423"></a> <span class="n">orientation</span> <span class="o">=</span> <span class="n">dng_orientation</span><span class="o">::</span><span class="n">Mirror90CCW</span><span class="p">();</span>
-<a name="line-424"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-425"></a>
-<a name="line-426"></a> <span class="k">case</span> <span class="n">DRawInfo</span><span class="o">::</span><span class="nl">ORIENTATION_90CCW</span><span class="p">:</span>
-<a name="line-427"></a> <span class="n">orientation</span> <span class="o">=</span> <span class="n">dng_orientation</span><span class="o">::</span><span class="n">Rotate90CCW</span><span class="p">();</span>
-<a name="line-428"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-429"></a>
-<a name="line-430"></a> <span class="k">case</span> <span class="n">DRawInfo</span><span class="o">::</span><span class="nl">ORIENTATION_90CW</span><span class="p">:</span>
-<a name="line-431"></a> <span class="n">orientation</span> <span class="o">=</span> <span class="n">dng_orientation</span><span class="o">::</span><span class="n">Rotate90CW</span><span class="p">();</span>
-<a name="line-432"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-433"></a>
-<a name="line-434"></a> <span class="k">default</span><span class="o">:</span> <span class="c1">// ORIENTATION_NONE</span>
-<a name="line-435"></a> <span class="n">orientation</span> <span class="o">=</span> <span class="n">dng_orientation</span><span class="o">::</span><span class="n">Normal</span><span class="p">();</span>
-<a name="line-436"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-437"></a> <span class="p">}</span>
-<a name="line-438"></a>
-<a name="line-439"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetBaseOrientation</span><span class="p">(</span><span class="n">orientation</span><span class="p">);</span>
-<a name="line-440"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetAntiAliasStrength</span><span class="p">(</span><span class="n">dng_urational</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="mi">100</span><span class="p">));</span>
-<a name="line-441"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetLinearResponseLimit</span><span class="p">(</span><span class="mf">1.0</span><span class="p">);</span>
-<a name="line-442"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetShadowScale</span><span class="p">(</span> <span class="n">dng_urational</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="p">);</span>
-<a name="line-443"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetAnalogBalance</span><span class="p">(</span><span class="n">dng_vector_3</span><span class="p">(</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">));</span>
-<a name="line-444"></a>
-<a name="line-445"></a> <span class="c1">// -------------------------------------------------------------------------------</span>
-<a name="line-446"></a>
-<a name="line-447"></a> <span class="n">AutoPtr</span><span class="o">&lt;</span><span class="n">dng_camera_profile</span><span class="o">&gt;</span> <span class="n">prof</span><span class="p">(</span><span class="k">new</span> <span class="n">dng_camera_profile</span><span class="p">);</span>
-<a name="line-448"></a> <span class="n">prof</span><span class="o">-&gt;</span><span class="n">SetName</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1 %2&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">make</span><span class="p">,</span> <span class="n">identify</span><span class="p">.</span><span class="n">model</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-449"></a>
-<a name="line-450"></a> <span class="c1">// Set Camera-&gt;XYZ Color matrix as profile.</span>
-<a name="line-451"></a>
-<a name="line-452"></a> <span class="n">dng_matrix</span> <span class="n">matrix</span><span class="p">;</span>
-<a name="line-453"></a>
-<a name="line-454"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">rawColors</span><span class="p">)</span>
-<a name="line-455"></a> <span class="p">{</span>
-<a name="line-456"></a> <span class="k">case</span> <span class="mi">3</span><span class="o">:</span>
-<a name="line-457"></a> <span class="p">{</span>
-<a name="line-458"></a> <span class="n">dng_matrix_3by3</span> <span class="n">camXYZ</span><span class="p">;</span>
-<a name="line-459"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">];</span>
-<a name="line-460"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">];</span>
-<a name="line-461"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">2</span><span class="p">];</span>
-<a name="line-462"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">];</span>
-<a name="line-463"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">];</span>
-<a name="line-464"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">];</span>
-<a name="line-465"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">];</span>
-<a name="line-466"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">1</span><span class="p">];</span>
-<a name="line-467"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">2</span><span class="p">];</span>
-<a name="line-468"></a>
-<a name="line-469"></a> <span class="k">if</span> <span class="p">(</span><span class="n">camXYZ</span><span class="p">.</span><span class="n">MaxEntry</span><span class="p">()</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">)</span>
-<a name="line-470"></a> <span class="p">{</span>
-<a name="line-471"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: camera XYZ Matrix is null : camera not supported&quot;</span> <span class="p">;</span>
-<a name="line-472"></a> <span class="k">return</span> <span class="n">FILENOTSUPPORTED</span><span class="p">;</span>
-<a name="line-473"></a> <span class="p">}</span>
-<a name="line-474"></a>
-<a name="line-475"></a> <span class="n">matrix</span> <span class="o">=</span> <span class="n">camXYZ</span><span class="p">;</span>
-<a name="line-476"></a>
-<a name="line-477"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-478"></a> <span class="p">}</span>
-<a name="line-479"></a>
-<a name="line-480"></a> <span class="k">case</span> <span class="mi">4</span><span class="o">:</span>
-<a name="line-481"></a> <span class="p">{</span>
-<a name="line-482"></a> <span class="n">dng_matrix_4by3</span> <span class="n">camXYZ</span><span class="p">;</span>
-<a name="line-483"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">];</span>
-<a name="line-484"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">];</span>
-<a name="line-485"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">2</span><span class="p">];</span>
-<a name="line-486"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">];</span>
-<a name="line-487"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">];</span>
-<a name="line-488"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">];</span>
-<a name="line-489"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">];</span>
-<a name="line-490"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">1</span><span class="p">];</span>
-<a name="line-491"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">2</span><span class="p">];</span>
-<a name="line-492"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">3</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">3</span><span class="p">][</span><span class="mi">0</span><span class="p">];</span>
-<a name="line-493"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">3</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">3</span><span class="p">][</span><span class="mi">1</span><span class="p">];</span>
-<a name="line-494"></a> <span class="n">camXYZ</span><span class="p">[</span><span class="mi">3</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">identify</span><span class="p">.</span><span class="n">cameraXYZMatrix</span><span class="p">[</span><span class="mi">3</span><span class="p">][</span><span class="mi">2</span><span class="p">];</span>
-<a name="line-495"></a>
-<a name="line-496"></a> <span class="k">if</span> <span class="p">(</span><span class="n">camXYZ</span><span class="p">.</span><span class="n">MaxEntry</span><span class="p">()</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">)</span>
-<a name="line-497"></a> <span class="p">{</span>
-<a name="line-498"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: camera XYZ Matrix is null : camera not supported&quot;</span> <span class="p">;</span>
-<a name="line-499"></a> <span class="k">return</span> <span class="n">FILENOTSUPPORTED</span><span class="p">;</span>
-<a name="line-500"></a> <span class="p">}</span>
-<a name="line-501"></a>
-<a name="line-502"></a> <span class="n">matrix</span> <span class="o">=</span> <span class="n">camXYZ</span><span class="p">;</span>
-<a name="line-503"></a>
-<a name="line-504"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-505"></a> <span class="p">}</span>
-<a name="line-506"></a> <span class="p">}</span>
-<a name="line-507"></a>
-<a name="line-508"></a> <span class="n">prof</span><span class="o">-&gt;</span><span class="n">SetColorMatrix1</span><span class="p">((</span><span class="n">dng_matrix</span><span class="p">)</span> <span class="n">matrix</span><span class="p">);</span>
-<a name="line-509"></a> <span class="n">prof</span><span class="o">-&gt;</span><span class="n">SetCalibrationIlluminant1</span><span class="p">(</span><span class="n">lsD65</span><span class="p">);</span>
-<a name="line-510"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">AddProfile</span><span class="p">(</span><span class="n">prof</span><span class="p">);</span>
-<a name="line-511"></a>
-<a name="line-512"></a> <span class="n">dng_vector</span> <span class="nf">camNeutral</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">rawColors</span><span class="p">);</span>
-<a name="line-513"></a>
-<a name="line-514"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">identify</span><span class="p">.</span><span class="n">rawColors</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-515"></a> <span class="p">{</span>
-<a name="line-516"></a> <span class="n">camNeutral</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="mf">1.0</span><span class="o">/</span><span class="n">identify</span><span class="p">.</span><span class="n">cameraMult</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
-<a name="line-517"></a> <span class="p">}</span>
-<a name="line-518"></a>
-<a name="line-519"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetCameraNeutral</span><span class="p">(</span><span class="n">camNeutral</span><span class="p">);</span>
-<a name="line-520"></a>
-<a name="line-521"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">)</span>
-<a name="line-522"></a> <span class="p">{</span>
-<a name="line-523"></a> <span class="k">return</span> <span class="n">PROCESSCANCELED</span><span class="p">;</span>
-<a name="line-524"></a> <span class="p">}</span>
-<a name="line-525"></a>
-<a name="line-526"></a> <span class="c1">// -----------------------------------------------------------------------------------------</span>
-<a name="line-527"></a>
-<a name="line-528"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Updating metadata to DNG Negative&quot;</span> <span class="p">;</span>
-<a name="line-529"></a>
-<a name="line-530"></a> <span class="n">dng_exif</span><span class="o">*</span> <span class="k">const</span> <span class="n">exif</span> <span class="o">=</span> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">GetExif</span><span class="p">();</span>
-<a name="line-531"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fModel</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">model</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-532"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fMake</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">identify</span><span class="p">.</span><span class="n">make</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-533"></a>
-<a name="line-534"></a> <span class="n">QString</span> <span class="n">str</span><span class="p">;</span>
-<a name="line-535"></a> <span class="n">DMetadata</span> <span class="n">meta</span><span class="p">;</span>
-<a name="line-536"></a>
-<a name="line-537"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">load</span><span class="p">(</span><span class="n">inputFile</span><span class="p">()))</span>
-<a name="line-538"></a> <span class="p">{</span>
-<a name="line-539"></a> <span class="kt">long</span> <span class="kt">int</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">;</span>
-<a name="line-540"></a> <span class="kt">long</span> <span class="n">val</span><span class="p">;</span>
-<a name="line-541"></a>
-<a name="line-542"></a> <span class="c1">// Time from original shot</span>
-<a name="line-543"></a>
-<a name="line-544"></a> <span class="n">dng_date_time_info</span> <span class="n">dti</span><span class="p">;</span>
-<a name="line-545"></a> <span class="n">dti</span><span class="p">.</span><span class="n">SetDateTime</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dngDateTime</span><span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getItemDateTime</span><span class="p">()));</span>
-<a name="line-546"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fDateTimeOriginal</span> <span class="o">=</span> <span class="n">dti</span><span class="p">;</span>
-<a name="line-547"></a>
-<a name="line-548"></a> <span class="n">dti</span><span class="p">.</span><span class="n">SetDateTime</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dngDateTime</span><span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getDigitizationDateTime</span><span class="p">(</span><span class="nb">true</span><span class="p">)));</span>
-<a name="line-549"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fDateTimeDigitized</span> <span class="o">=</span> <span class="n">dti</span><span class="p">;</span>
-<a name="line-550"></a>
-<a name="line-551"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">UpdateDateTime</span><span class="p">(</span><span class="n">dti</span><span class="p">);</span>
-<a name="line-552"></a>
-<a name="line-553"></a> <span class="c1">// String Tags</span>
-<a name="line-554"></a>
-<a name="line-555"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Image.Make&quot;</span><span class="p">);</span>
-<a name="line-556"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fMake</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-557"></a>
-<a name="line-558"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Image.Model&quot;</span><span class="p">);</span>
-<a name="line-559"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fModel</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-560"></a>
-<a name="line-561"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Image.Software&quot;</span><span class="p">);</span>
-<a name="line-562"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fSoftware</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-563"></a>
-<a name="line-564"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Image.ImageDescription&quot;</span><span class="p">);</span>
-<a name="line-565"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fImageDescription</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-566"></a>
-<a name="line-567"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Image.Artist&quot;</span><span class="p">);</span>
-<a name="line-568"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fArtist</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-569"></a>
-<a name="line-570"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Image.Copyright&quot;</span><span class="p">);</span>
-<a name="line-571"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fCopyright</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-572"></a>
-<a name="line-573"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Photo.UserComment&quot;</span><span class="p">);</span>
-<a name="line-574"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fUserComment</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-575"></a>
-<a name="line-576"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Image.CameraSerialNumber&quot;</span><span class="p">);</span>
-<a name="line-577"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fCameraSerialNumber</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-578"></a>
-<a name="line-579"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSLatitudeRef&quot;</span><span class="p">);</span>
-<a name="line-580"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSLatitudeRef</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-581"></a>
-<a name="line-582"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSLongitudeRef&quot;</span><span class="p">);</span>
-<a name="line-583"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSLongitudeRef</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-584"></a>
-<a name="line-585"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSSatellites&quot;</span><span class="p">);</span>
-<a name="line-586"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSSatellites</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-587"></a>
-<a name="line-588"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSStatus&quot;</span><span class="p">);</span>
-<a name="line-589"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSStatus</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-590"></a>
-<a name="line-591"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSMeasureMode&quot;</span><span class="p">);</span>
-<a name="line-592"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSMeasureMode</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-593"></a>
-<a name="line-594"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSSpeedRef&quot;</span><span class="p">);</span>
-<a name="line-595"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSSpeedRef</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-596"></a>
-<a name="line-597"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSTrackRef&quot;</span><span class="p">);</span>
-<a name="line-598"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSTrackRef</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-599"></a>
-<a name="line-600"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSSpeedRef&quot;</span><span class="p">);</span>
-<a name="line-601"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSSpeedRef</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-602"></a>
-<a name="line-603"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSImgDirectionRef&quot;</span><span class="p">);</span>
-<a name="line-604"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSSpeedRef</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-605"></a>
-<a name="line-606"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSMapDatum&quot;</span><span class="p">);</span>
-<a name="line-607"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSMapDatum</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-608"></a>
-<a name="line-609"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestLatitudeRef&quot;</span><span class="p">);</span>
-<a name="line-610"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestLatitudeRef</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-611"></a>
-<a name="line-612"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestLongitudeRef&quot;</span><span class="p">);</span>
-<a name="line-613"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestLongitudeRef</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-614"></a>
-<a name="line-615"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestBearingRef&quot;</span><span class="p">);</span>
-<a name="line-616"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestBearingRef</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-617"></a>
-<a name="line-618"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestDistanceRef&quot;</span><span class="p">);</span>
-<a name="line-619"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestDistanceRef</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-620"></a>
-<a name="line-621"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSProcessingMethod&quot;</span><span class="p">);</span>
-<a name="line-622"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSProcessingMethod</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-623"></a>
-<a name="line-624"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSAreaInformation&quot;</span><span class="p">);</span>
-<a name="line-625"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSAreaInformation</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-626"></a>
-<a name="line-627"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDateStamp&quot;</span><span class="p">);</span>
-<a name="line-628"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDateStamp</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-629"></a>
-<a name="line-630"></a> <span class="c1">// Rational Tags</span>
-<a name="line-631"></a>
-<a name="line-632"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.ExposureTime&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fExposureTime</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-633"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.FNumber&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fFNumber</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-634"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.ShutterSpeedValue&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fShutterSpeedValue</span> <span class="o">=</span> <span class="n">dng_srational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-635"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.ApertureValue&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fApertureValue</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-636"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.BrightnessValue&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fBrightnessValue</span> <span class="o">=</span> <span class="n">dng_srational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-637"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.ExposureBiasValue&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fExposureBiasValue</span> <span class="o">=</span> <span class="n">dng_srational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-638"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.MaxApertureValue&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fMaxApertureValue</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-639"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.FocalLength&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fFocalLength</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-640"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.DigitalZoomRatio&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fDigitalZoomRatio</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-641"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.SubjectDistance&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fSubjectDistance</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-642"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Image.BatteryLevel&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fBatteryLevelR</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-643"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.FocalPlaneXResolution&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fFocalPlaneXResolution</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-644"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Photo.FocalPlaneYResolution&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fFocalPlaneYResolution</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-645"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSAltitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSAltitude</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-646"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDOP&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDOP</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-647"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSSpeed&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSSpeed</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-648"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSTrack&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSTrack</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-649"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSImgDirection&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSImgDirection</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-650"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestBearing&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestBearing</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-651"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestDistance&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestDistance</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-652"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSLatitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSLatitude</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-653"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSLatitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSLatitude</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-654"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSLatitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSLatitude</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-655"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSLongitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSLongitude</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-656"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSLongitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSLongitude</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-657"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSLongitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSLongitude</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-658"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSTimeStamp&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSTimeStamp</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-659"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSTimeStamp&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSTimeStamp</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-660"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSTimeStamp&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSTimeStamp</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-661"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestLatitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestLatitude</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-662"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestLatitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestLatitude</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-663"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestLatitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestLatitude</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-664"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestLongitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestLongitude</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-665"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestLongitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestLongitude</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-666"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDestLongitude&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDestLongitude</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-667"></a>
-<a name="line-668"></a> <span class="c1">// Integer Tags</span>
-<a name="line-669"></a>
-<a name="line-670"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.ExposureProgram&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fExposureProgram</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-671"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.ISOSpeedRatings&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fISOSpeedRatings</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-672"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.MeteringMode&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fMeteringMode</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-673"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.LightSource&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLightSource</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-674"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.Flash&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fFlash</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-675"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.SensingMethod&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fSensingMethod</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-676"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.FileSource&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fFileSource</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-677"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.SceneType&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fSceneType</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-678"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.CustomRendered&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fCustomRendered</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-679"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.ExposureMode&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fExposureMode</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-680"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.WhiteBalance&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fWhiteBalance</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-681"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.SceneCaptureType&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fSceneCaptureType</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-682"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.GainControl&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGainControl</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-683"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.Contrast&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fContrast</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-684"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.Saturation&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fSaturation</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-685"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.Sharpness&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fSharpness</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-686"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.SubjectDistanceRange&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fSubjectDistanceRange</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-687"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.FocalLengthIn35mmFilm&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fFocalLengthIn35mmFilm</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-688"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.ComponentsConfiguration&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fComponentsConfiguration</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-689"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.PixelXDimension&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fPixelXDimension</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-690"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.PixelYDimension&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fPixelYDimension</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-691"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Photo.FocalPlaneResolutionUnit&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fFocalPlaneResolutionUnit</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-692"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSAltitudeRef&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSAltitudeRef</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-693"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDifferential&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSDifferential</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-694"></a> <span class="kt">long</span> <span class="n">gpsVer1</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-695"></a> <span class="kt">long</span> <span class="n">gpsVer2</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-696"></a> <span class="kt">long</span> <span class="n">gpsVer3</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-697"></a> <span class="kt">long</span> <span class="n">gpsVer4</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-698"></a> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSVersionID&quot;</span><span class="p">,</span> <span class="n">gpsVer1</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-699"></a> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSVersionID&quot;</span><span class="p">,</span> <span class="n">gpsVer2</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-700"></a> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSVersionID&quot;</span><span class="p">,</span> <span class="n">gpsVer3</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
-<a name="line-701"></a> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSVersionID&quot;</span><span class="p">,</span> <span class="n">gpsVer4</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-702"></a> <span class="kt">long</span> <span class="n">gpsVer</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-703"></a> <span class="n">gpsVer</span> <span class="o">+=</span> <span class="n">gpsVer1</span> <span class="o">&lt;&lt;</span> <span class="mi">24</span><span class="p">;</span>
-<a name="line-704"></a> <span class="n">gpsVer</span> <span class="o">+=</span> <span class="n">gpsVer2</span> <span class="o">&lt;&lt;</span> <span class="mi">16</span><span class="p">;</span>
-<a name="line-705"></a> <span class="n">gpsVer</span> <span class="o">+=</span> <span class="n">gpsVer3</span> <span class="o">&lt;&lt;</span> <span class="mi">8</span><span class="p">;</span>
-<a name="line-706"></a> <span class="n">gpsVer</span> <span class="o">+=</span> <span class="n">gpsVer4</span><span class="p">;</span>
-<a name="line-707"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fGPSVersionID</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">gpsVer</span><span class="p">;</span>
-<a name="line-708"></a>
-<a name="line-709"></a> <span class="c1">// Nikon Markernotes</span>
-<a name="line-710"></a>
-<a name="line-711"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Nikon3.Lens&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-712"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Nikon3.Lens&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-713"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Nikon3.Lens&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-714"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Nikon3.Lens&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">3</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-715"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Nikon3.ISOSpeed&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fISOSpeedRatings</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-716"></a>
-<a name="line-717"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Nikon3.SerialNO&quot;</span><span class="p">);</span>
-<a name="line-718"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">str</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;NO=&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
-<a name="line-719"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fCameraSerialNumber</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-720"></a>
-<a name="line-721"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Nikon3.SerialNumber&quot;</span><span class="p">);</span>
-<a name="line-722"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fCameraSerialNumber</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-723"></a>
-<a name="line-724"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Nikon3.ShutterCount&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fImageNumber</span> <span class="o">=</span> <span class="p">(</span><span class="n">uint32</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
-<a name="line-725"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.NikonLd1.LensIDNumber&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensID</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">((</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">val</span><span class="p">)).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-726"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.NikonLd2.LensIDNumber&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensID</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">((</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">val</span><span class="p">)).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-727"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.NikonLd3.LensIDNumber&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensID</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">((</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">val</span><span class="p">)).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-728"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.NikonLd2.FocusDistance&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fSubjectDistance</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">((</span><span class="n">uint32</span><span class="p">)</span><span class="n">pow</span><span class="p">(</span><span class="mf">10.0</span><span class="p">,</span> <span class="n">val</span><span class="o">/</span><span class="mf">40.0</span><span class="p">),</span> <span class="mi">100</span><span class="p">);</span>
-<a name="line-729"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.NikonLd3.FocusDistance&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fSubjectDistance</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">((</span><span class="n">uint32</span><span class="p">)</span><span class="n">pow</span><span class="p">(</span><span class="mf">10.0</span><span class="p">,</span> <span class="n">val</span><span class="o">/</span><span class="mf">40.0</span><span class="p">),</span> <span class="mi">100</span><span class="p">);</span>
-<a name="line-730"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.NikonLd1.LensIDNumber&quot;</span><span class="p">);</span>
-<a name="line-731"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-732"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.NikonLd2.LensIDNumber&quot;</span><span class="p">);</span>
-<a name="line-733"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-734"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.NikonLd3.LensIDNumber&quot;</span><span class="p">);</span>
-<a name="line-735"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-736"></a>
-<a name="line-737"></a> <span class="c1">// Canon Markernotes</span>
-<a name="line-738"></a>
-<a name="line-739"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Canon.SerialNumber&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fCameraSerialNumber</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">((</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">val</span><span class="p">)).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-740"></a><span class="cm">/*</span>
-<a name="line-741"></a><span class="cm"> if (meta.getExifTagLong(&quot;Exif.CanonCs.LensType&quot;, val)) exif-&gt;fLensID.Set_ASCII((QString::fromUtf8(&quot;%1&quot;).arg(val)).toLatin1().constData());</span>
-<a name="line-742"></a><span class="cm"> if (meta.getExifTagLong(&quot;Exif.CanonCs.FlashActivity&quot;, val)) exif-&gt;fFlash = (uint32)val;</span>
-<a name="line-743"></a><span class="cm"> if (meta.getExifTagLong(&quot;Exif.CanonFi.FileNumber&quot;, val)) exif-&gt;fImageNumber = (uint32)val;</span>
-<a name="line-744"></a><span class="cm"> if (meta.getExifTagLong(&quot;Exif.CanonCs.MaxAperture&quot;, val)) exif-&gt;fMaxApertureValue = dng_urational(val, 100000);</span>
-<a name="line-745"></a><span class="cm">*/</span>
-<a name="line-746"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.CanonCs.ExposureProgram&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span>
-<a name="line-747"></a> <span class="p">{</span>
-<a name="line-748"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">val</span><span class="p">)</span>
-<a name="line-749"></a> <span class="p">{</span>
-<a name="line-750"></a> <span class="k">case</span> <span class="mi">1</span><span class="o">:</span>
-<a name="line-751"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fExposureProgram</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
-<a name="line-752"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-753"></a>
-<a name="line-754"></a> <span class="k">case</span> <span class="mi">2</span><span class="o">:</span>
-<a name="line-755"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fExposureProgram</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
-<a name="line-756"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-757"></a>
-<a name="line-758"></a> <span class="k">case</span> <span class="mi">3</span><span class="o">:</span>
-<a name="line-759"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fExposureProgram</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
-<a name="line-760"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-761"></a>
-<a name="line-762"></a> <span class="k">case</span> <span class="mi">4</span><span class="o">:</span>
-<a name="line-763"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fExposureProgram</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-764"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-765"></a>
-<a name="line-766"></a> <span class="k">default</span><span class="o">:</span>
-<a name="line-767"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-768"></a> <span class="p">}</span>
-<a name="line-769"></a> <span class="p">}</span>
-<a name="line-770"></a>
-<a name="line-771"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.CanonCs.MeteringMode&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span>
-<a name="line-772"></a> <span class="p">{</span>
-<a name="line-773"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">val</span><span class="p">)</span>
-<a name="line-774"></a> <span class="p">{</span>
-<a name="line-775"></a> <span class="k">case</span> <span class="mi">1</span><span class="o">:</span>
-<a name="line-776"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fMeteringMode</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
-<a name="line-777"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-778"></a>
-<a name="line-779"></a> <span class="k">case</span> <span class="mi">2</span><span class="o">:</span>
-<a name="line-780"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fMeteringMode</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-781"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-782"></a>
-<a name="line-783"></a> <span class="k">case</span> <span class="mi">3</span><span class="o">:</span>
-<a name="line-784"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fMeteringMode</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
-<a name="line-785"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-786"></a>
-<a name="line-787"></a> <span class="k">case</span> <span class="mi">4</span><span class="o">:</span>
-<a name="line-788"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fMeteringMode</span> <span class="o">=</span> <span class="mi">6</span><span class="p">;</span>
-<a name="line-789"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-790"></a>
-<a name="line-791"></a> <span class="k">case</span> <span class="mi">5</span><span class="o">:</span>
-<a name="line-792"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fMeteringMode</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
-<a name="line-793"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-794"></a>
-<a name="line-795"></a> <span class="k">default</span><span class="o">:</span>
-<a name="line-796"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-797"></a> <span class="p">}</span>
-<a name="line-798"></a> <span class="p">}</span>
-<a name="line-799"></a>
-<a name="line-800"></a> <span class="kt">long</span> <span class="n">canonLensUnits</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-801"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.CanonCs.Lens&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span> <span class="n">canonLensUnits</span> <span class="o">=</span> <span class="n">num</span><span class="p">;</span>
-<a name="line-802"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.CanonCs.Lens&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">canonLensUnits</span><span class="p">);</span>
-<a name="line-803"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.CanonCs.Lens&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">canonLensUnits</span><span class="p">);</span>
-<a name="line-804"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.Canon.FocalLength&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fFocalLength</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">canonLensUnits</span><span class="p">);</span>
-<a name="line-805"></a> <span class="kt">long</span> <span class="n">canonLensType</span> <span class="o">=</span> <span class="mi">65535</span><span class="p">;</span>
-<a name="line-806"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.CanonCs.LensType&quot;</span><span class="p">,</span> <span class="n">canonLensType</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensID</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">((</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">canonLensType</span><span class="p">)).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-807"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Canon.LensModel&quot;</span><span class="p">);</span>
-<a name="line-808"></a>
-<a name="line-809"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-810"></a> <span class="p">{</span>
-<a name="line-811"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-812"></a> <span class="p">}</span>
-<a name="line-813"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">canonLensType</span> <span class="o">!=</span> <span class="mi">65535</span><span class="p">)</span>
-<a name="line-814"></a> <span class="p">{</span>
-<a name="line-815"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.CanonCs.LensType&quot;</span><span class="p">);</span>
-<a name="line-816"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-817"></a> <span class="p">}</span>
-<a name="line-818"></a>
-<a name="line-819"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Canon.OwnerName&quot;</span><span class="p">);</span>
-<a name="line-820"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fOwnerName</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-821"></a>
-<a name="line-822"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Canon.FirmwareVersion&quot;</span><span class="p">);</span>
-<a name="line-823"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">str</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Firmware&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
-<a name="line-824"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">str</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Version&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
-<a name="line-825"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fFirmware</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-826"></a>
-<a name="line-827"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.CanonSi.ISOSpeed&quot;</span><span class="p">);</span>
-<a name="line-828"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fISOSpeedRatings</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="n">toInt</span><span class="p">();</span>
-<a name="line-829"></a>
-<a name="line-830"></a> <span class="c1">// Pentax Markernotes</span>
-<a name="line-831"></a>
-<a name="line-832"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Pentax.LensType&quot;</span><span class="p">);</span>
-<a name="line-833"></a>
-<a name="line-834"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-835"></a> <span class="p">{</span>
-<a name="line-836"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-837"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">TrimLeadingBlanks</span><span class="p">();</span>
-<a name="line-838"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">TrimTrailingBlanks</span><span class="p">();</span>
-<a name="line-839"></a> <span class="p">}</span>
-<a name="line-840"></a>
-<a name="line-841"></a> <span class="kt">long</span> <span class="n">pentaxLensId1</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-842"></a> <span class="kt">long</span> <span class="n">pentaxLensId2</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-843"></a>
-<a name="line-844"></a> <span class="k">if</span> <span class="p">((</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Pentax.LensType&quot;</span><span class="p">,</span> <span class="n">pentaxLensId1</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="o">&amp;&amp;</span>
-<a name="line-845"></a> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Pentax.LensType&quot;</span><span class="p">,</span> <span class="n">pentaxLensId2</span><span class="p">,</span> <span class="mi">1</span><span class="p">)))</span>
-<a name="line-846"></a> <span class="p">{</span>
-<a name="line-847"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensID</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">pentaxLensId1</span><span class="p">,</span> <span class="n">pentaxLensId2</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-848"></a> <span class="p">}</span>
-<a name="line-849"></a>
-<a name="line-850"></a> <span class="c1">// Olympus Makernotes</span>
-<a name="line-851"></a>
-<a name="line-852"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.OlympusEq.SerialNumber&quot;</span><span class="p">);</span>
-<a name="line-853"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fCameraSerialNumber</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-854"></a>
-<a name="line-855"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.OlympusEq.LensSerialNumber&quot;</span><span class="p">);</span>
-<a name="line-856"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensSerialNumber</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-857"></a>
-<a name="line-858"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.OlympusEq.LensModel&quot;</span><span class="p">);</span>
-<a name="line-859"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-860"></a>
-<a name="line-861"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.OlympusEq.MinFocalLength&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-862"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.OlympusEq.MaxFocalLength&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">dng_urational</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-863"></a>
-<a name="line-864"></a> <span class="c1">// Panasonic Makernotes</span>
-<a name="line-865"></a>
-<a name="line-866"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Panasonic.LensType&quot;</span><span class="p">);</span>
-<a name="line-867"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-868"></a>
-<a name="line-869"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Panasonic.LensSerialNumber&quot;</span><span class="p">);</span>
-<a name="line-870"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensSerialNumber</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-871"></a>
-<a name="line-872"></a> <span class="c1">// Sony Makernotes</span>
-<a name="line-873"></a>
-<a name="line-874"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.Sony2.LensID&quot;</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span>
-<a name="line-875"></a> <span class="p">{</span>
-<a name="line-876"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensID</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">val</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-877"></a> <span class="p">}</span>
-<a name="line-878"></a>
-<a name="line-879"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.Sony2.LensID&quot;</span><span class="p">);</span>
-<a name="line-880"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">str</span><span class="p">.</span><span class="n">trimmed</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-881"></a>
-<a name="line-882"></a> <span class="c1">// -------------------------------------------</span>
-<a name="line-883"></a>
-<a name="line-884"></a> <span class="k">if</span> <span class="p">((</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">IsEmpty</span><span class="p">())</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">As_real64</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">As_real64</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">))</span>
-<a name="line-885"></a> <span class="p">{</span>
-<a name="line-886"></a> <span class="n">QString</span> <span class="n">lensName</span><span class="p">;</span>
-<a name="line-887"></a> <span class="n">QTextStream</span> <span class="nf">stream</span><span class="p">(</span><span class="o">&amp;</span><span class="n">lensName</span><span class="p">);</span>
-<a name="line-888"></a> <span class="kt">double</span> <span class="n">dval</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">n</span> <span class="o">/</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">d</span><span class="p">;</span>
-<a name="line-889"></a> <span class="n">stream</span> <span class="o">&lt;&lt;</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">dval</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="sc">&#39;f&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-890"></a>
-<a name="line-891"></a> <span class="k">if</span> <span class="p">(</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">As_real64</span><span class="p">()</span> <span class="o">!=</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">As_real64</span><span class="p">())</span>
-<a name="line-892"></a> <span class="p">{</span>
-<a name="line-893"></a> <span class="n">dval</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">n</span> <span class="o">/</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">d</span><span class="p">;</span>
-<a name="line-894"></a> <span class="n">stream</span> <span class="o">&lt;&lt;</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;-%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">dval</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="sc">&#39;f&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-895"></a> <span class="p">}</span>
-<a name="line-896"></a>
-<a name="line-897"></a> <span class="n">stream</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; mm&quot;</span><span class="p">;</span>
-<a name="line-898"></a>
-<a name="line-899"></a> <span class="k">if</span> <span class="p">(</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">As_real64</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-900"></a> <span class="p">{</span>
-<a name="line-901"></a> <span class="n">dval</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">n</span> <span class="o">/</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">d</span><span class="p">;</span>
-<a name="line-902"></a> <span class="n">stream</span> <span class="o">&lt;&lt;</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot; 1/%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">dval</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="sc">&#39;f&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-903"></a> <span class="p">}</span>
-<a name="line-904"></a>
-<a name="line-905"></a> <span class="k">if</span> <span class="p">((</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">3</span><span class="p">].</span><span class="n">As_real64</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
-<a name="line-906"></a> <span class="p">(</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">As_real64</span><span class="p">()</span> <span class="o">!=</span> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">3</span><span class="p">].</span><span class="n">As_real64</span><span class="p">()))</span>
-<a name="line-907"></a> <span class="p">{</span>
-<a name="line-908"></a> <span class="n">dval</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">3</span><span class="p">].</span><span class="n">n</span> <span class="o">/</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensInfo</span><span class="p">[</span><span class="mi">3</span><span class="p">].</span><span class="n">d</span><span class="p">;</span>
-<a name="line-909"></a> <span class="n">stream</span> <span class="o">&lt;&lt;</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;-%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">dval</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="sc">&#39;f&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-910"></a> <span class="p">}</span>
-<a name="line-911"></a>
-<a name="line-912"></a> <span class="n">exif</span><span class="o">-&gt;</span><span class="n">fLensName</span><span class="p">.</span><span class="n">Set_ASCII</span><span class="p">(</span><span class="n">lensName</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-913"></a> <span class="p">}</span>
-<a name="line-914"></a>
-<a name="line-915"></a> <span class="c1">// Markernote backup.</span>
-<a name="line-916"></a>
-<a name="line-917"></a> <span class="n">QByteArray</span> <span class="n">mkrnts</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagData</span><span class="p">(</span><span class="s">&quot;Exif.Photo.MakerNote&quot;</span><span class="p">);</span>
-<a name="line-918"></a>
-<a name="line-919"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">mkrnts</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-920"></a> <span class="p">{</span>
-<a name="line-921"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Backup Makernote (&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">mkrnts</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; bytes)&quot;</span> <span class="p">;</span>
-<a name="line-922"></a>
-<a name="line-923"></a><span class="hll"> <span class="n">dng_memory_allocator</span> <span class="nf">memalloc</span><span class="p">(</span><span class="n">gDefaultDNGMemoryAllocator</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-924"></a> <span class="n">dng_memory_stream</span> <span class="nf">stream</span><span class="p">(</span><span class="n">memalloc</span><span class="p">);</span>
-<a name="line-925"></a> <span class="n">stream</span><span class="p">.</span><span class="n">Put</span><span class="p">(</span><span class="n">mkrnts</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">mkrnts</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
-<a name="line-926"></a> <span class="n">AutoPtr</span><span class="o">&lt;</span><span class="n">dng_memory_block</span><span class="o">&gt;</span> <span class="n">block</span><span class="p">(</span><span class="n">host</span><span class="p">.</span><span class="n">Allocate</span><span class="p">(</span><span class="n">mkrnts</span><span class="p">.</span><span class="n">size</span><span class="p">()));</span>
-<a name="line-927"></a> <span class="n">stream</span><span class="p">.</span><span class="n">SetReadPosition</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-928"></a> <span class="n">stream</span><span class="p">.</span><span class="n">Get</span><span class="p">(</span><span class="n">block</span><span class="o">-&gt;</span><span class="n">Buffer</span><span class="p">(),</span> <span class="n">mkrnts</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
-<a name="line-929"></a>
-<a name="line-930"></a> <span class="k">if</span> <span class="p">(</span><span class="n">identifyMake</span><span class="p">.</span><span class="n">make</span> <span class="o">!=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Canon&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
-<a name="line-931"></a> <span class="n">identifyMake</span><span class="p">.</span><span class="n">make</span> <span class="o">!=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Panasonic&quot;</span><span class="p">))</span>
-<a name="line-932"></a> <span class="p">{</span>
-<a name="line-933"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetMakerNote</span><span class="p">(</span><span class="n">block</span><span class="p">);</span>
-<a name="line-934"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetMakerNoteSafety</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-935"></a> <span class="p">}</span>
-<a name="line-936"></a>
-<a name="line-937"></a> <span class="kt">long</span> <span class="n">mknOffset</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-938"></a> <span class="n">QString</span> <span class="n">mknByteOrder</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.MakerNote.ByteOrder&quot;</span><span class="p">);</span>
-<a name="line-939"></a>
-<a name="line-940"></a> <span class="k">if</span> <span class="p">((</span><span class="n">meta</span><span class="p">.</span><span class="n">getExifTagLong</span><span class="p">(</span><span class="s">&quot;Exif.MakerNote.Offset&quot;</span><span class="p">,</span> <span class="n">mknOffset</span><span class="p">))</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">mknByteOrder</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-941"></a> <span class="p">{</span>
-<a name="line-942"></a> <span class="n">dng_memory_stream</span> <span class="n">streamPriv</span><span class="p">(</span><span class="n">memalloc</span><span class="p">);</span>
-<a name="line-943"></a> <span class="n">streamPriv</span><span class="p">.</span><span class="n">SetBigEndian</span><span class="p">();</span>
-<a name="line-944"></a>
-<a name="line-945"></a> <span class="n">streamPriv</span><span class="p">.</span><span class="n">Put</span><span class="p">(</span><span class="s">&quot;Adobe&quot;</span><span class="p">,</span> <span class="mi">5</span><span class="p">);</span>
-<a name="line-946"></a> <span class="n">streamPriv</span><span class="p">.</span><span class="n">Put_uint8</span><span class="p">(</span><span class="mh">0x00</span><span class="p">);</span>
-<a name="line-947"></a> <span class="n">streamPriv</span><span class="p">.</span><span class="n">Put</span><span class="p">(</span><span class="s">&quot;MakN&quot;</span><span class="p">,</span> <span class="mi">4</span><span class="p">);</span>
-<a name="line-948"></a> <span class="n">streamPriv</span><span class="p">.</span><span class="n">Put_uint32</span><span class="p">(</span><span class="n">mkrnts</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">+</span> <span class="n">mknByteOrder</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">+</span> <span class="mi">4</span><span class="p">);</span>
-<a name="line-949"></a> <span class="n">streamPriv</span><span class="p">.</span><span class="n">Put</span><span class="p">(</span><span class="n">mknByteOrder</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">(),</span> <span class="n">mknByteOrder</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
-<a name="line-950"></a> <span class="n">streamPriv</span><span class="p">.</span><span class="n">Put_uint32</span><span class="p">(</span><span class="n">mknOffset</span><span class="p">);</span>
-<a name="line-951"></a> <span class="n">streamPriv</span><span class="p">.</span><span class="n">Put</span><span class="p">(</span><span class="n">mkrnts</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">mkrnts</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
-<a name="line-952"></a> <span class="n">AutoPtr</span><span class="o">&lt;</span><span class="n">dng_memory_block</span><span class="o">&gt;</span> <span class="n">blockPriv</span><span class="p">(</span><span class="n">host</span><span class="p">.</span><span class="n">Allocate</span><span class="p">(</span><span class="n">streamPriv</span><span class="p">.</span><span class="n">Length</span><span class="p">()));</span>
-<a name="line-953"></a> <span class="n">streamPriv</span><span class="p">.</span><span class="n">SetReadPosition</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-954"></a> <span class="n">streamPriv</span><span class="p">.</span><span class="n">Get</span><span class="p">(</span><span class="n">blockPriv</span><span class="o">-&gt;</span><span class="n">Buffer</span><span class="p">(),</span> <span class="n">streamPriv</span><span class="p">.</span><span class="n">Length</span><span class="p">());</span>
-<a name="line-955"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetPrivateData</span><span class="p">(</span><span class="n">blockPriv</span><span class="p">);</span>
-<a name="line-956"></a> <span class="p">}</span>
-<a name="line-957"></a> <span class="p">}</span>
-<a name="line-958"></a> <span class="p">}</span>
-<a name="line-959"></a>
-<a name="line-960"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">backupOriginalRawFile</span><span class="p">)</span>
-<a name="line-961"></a> <span class="p">{</span>
-<a name="line-962"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Backup Original RAW file (&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">inputInfo</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; bytes)&quot;</span><span class="p">;</span>
-<a name="line-963"></a>
-<a name="line-964"></a> <span class="n">QFileInfo</span> <span class="nf">originalFileInfo</span><span class="p">(</span><span class="n">inputFile</span><span class="p">());</span>
-<a name="line-965"></a>
-<a name="line-966"></a> <span class="n">QFile</span> <span class="nf">originalFile</span><span class="p">(</span><span class="n">originalFileInfo</span><span class="p">.</span><span class="n">absoluteFilePath</span><span class="p">());</span>
-<a name="line-967"></a>
-<a name="line-968"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">originalFile</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="n">QIODevice</span><span class="o">::</span><span class="n">ReadOnly</span><span class="p">))</span>
-<a name="line-969"></a> <span class="p">{</span>
-<a name="line-970"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Cannot open original RAW file to backup in DNG. Aborted...&quot;</span><span class="p">;</span>
-<a name="line-971"></a> <span class="k">return</span> <span class="n">PROCESSFAILED</span><span class="p">;</span>
-<a name="line-972"></a> <span class="p">}</span>
-<a name="line-973"></a>
-<a name="line-974"></a> <span class="n">QDataStream</span> <span class="n">originalDataStream</span><span class="p">(</span><span class="o">&amp;</span><span class="n">originalFile</span><span class="p">);</span>
-<a name="line-975"></a>
-<a name="line-976"></a> <span class="n">quint32</span> <span class="n">forkLength</span> <span class="o">=</span> <span class="n">originalFileInfo</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
-<a name="line-977"></a> <span class="n">quint32</span> <span class="n">forkBlocks</span> <span class="o">=</span> <span class="p">(</span><span class="n">quint32</span><span class="p">)</span><span class="n">floor</span><span class="p">((</span><span class="n">forkLength</span> <span class="o">+</span> <span class="mf">65535.0</span><span class="p">)</span> <span class="o">/</span> <span class="mf">65536.0</span><span class="p">);</span>
-<a name="line-978"></a>
-<a name="line-979"></a> <span class="n">QVector</span><span class="o">&lt;</span><span class="n">quint32</span><span class="o">&gt;</span> <span class="n">offsets</span><span class="p">;</span>
-<a name="line-980"></a> <span class="n">quint32</span> <span class="n">offset</span> <span class="o">=</span> <span class="p">(</span><span class="mi">2</span> <span class="o">+</span> <span class="n">forkBlocks</span><span class="p">)</span> <span class="o">*</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">quint32</span><span class="p">);</span>
-<a name="line-981"></a> <span class="n">offsets</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">offset</span><span class="p">);</span>
-<a name="line-982"></a>
-<a name="line-983"></a> <span class="n">QByteArray</span> <span class="n">originalDataBlock</span><span class="p">;</span>
-<a name="line-984"></a> <span class="n">originalDataBlock</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="n">CHUNK</span><span class="p">);</span>
-<a name="line-985"></a>
-<a name="line-986"></a> <span class="n">QTemporaryFile</span> <span class="n">compressedFile</span><span class="p">;</span>
-<a name="line-987"></a>
-<a name="line-988"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">compressedFile</span><span class="p">.</span><span class="n">open</span><span class="p">())</span>
-<a name="line-989"></a> <span class="p">{</span>
-<a name="line-990"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Cannot open temporary file to write Zipped Raw data. Aborted...&quot;</span><span class="p">;</span>
-<a name="line-991"></a> <span class="k">return</span> <span class="n">PROCESSFAILED</span><span class="p">;</span>
-<a name="line-992"></a> <span class="p">}</span>
-<a name="line-993"></a>
-<a name="line-994"></a> <span class="n">QDataStream</span> <span class="n">compressedDataStream</span><span class="p">(</span><span class="o">&amp;</span><span class="n">compressedFile</span><span class="p">);</span>
-<a name="line-995"></a>
-<a name="line-996"></a> <span class="k">for</span> <span class="p">(</span><span class="n">quint32</span> <span class="n">block</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">block</span> <span class="o">&lt;</span> <span class="n">forkBlocks</span> <span class="p">;</span> <span class="o">++</span><span class="n">block</span><span class="p">)</span>
-<a name="line-997"></a> <span class="p">{</span>
-<a name="line-998"></a> <span class="kt">int</span> <span class="n">originalBlockLength</span> <span class="o">=</span> <span class="n">originalDataStream</span><span class="p">.</span><span class="n">readRawData</span><span class="p">(</span><span class="n">originalDataBlock</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">CHUNK</span><span class="p">);</span>
-<a name="line-999"></a>
-<a name="line-1000"></a> <span class="n">QByteArray</span> <span class="n">compressedDataBlock</span> <span class="o">=</span> <span class="n">qCompress</span><span class="p">((</span><span class="k">const</span> <span class="n">uchar</span><span class="o">*</span><span class="p">)</span><span class="n">originalDataBlock</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">originalBlockLength</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span>
-<a name="line-1001"></a> <span class="n">compressedDataBlock</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">4</span><span class="p">);</span> <span class="c1">// removes qCompress own header</span>
-<a name="line-1002"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: compressed data block &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">originalBlockLength</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; -&gt; &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">compressedDataBlock</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
-<a name="line-1003"></a>
-<a name="line-1004"></a> <span class="n">offset</span> <span class="o">+=</span> <span class="n">compressedDataBlock</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
-<a name="line-1005"></a> <span class="n">offsets</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">offset</span><span class="p">);</span>
-<a name="line-1006"></a>
-<a name="line-1007"></a> <span class="n">compressedDataStream</span><span class="p">.</span><span class="n">writeRawData</span><span class="p">(</span><span class="n">compressedDataBlock</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">compressedDataBlock</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
-<a name="line-1008"></a> <span class="p">}</span>
-<a name="line-1009"></a>
-<a name="line-1010"></a><span class="hll"> <span class="n">dng_memory_allocator</span> <span class="n">memalloc</span><span class="p">(</span><span class="n">gDefaultDNGMemoryAllocator</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-1011"></a> <span class="n">dng_memory_stream</span> <span class="nf">tempDataStream</span><span class="p">(</span><span class="n">memalloc</span><span class="p">);</span>
-<a name="line-1012"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">SetBigEndian</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-1013"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Put_uint32</span><span class="p">(</span><span class="n">forkLength</span><span class="p">);</span>
-<a name="line-1014"></a>
-<a name="line-1015"></a> <span class="k">for</span> <span class="p">(</span><span class="n">qint32</span> <span class="n">idx</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">idx</span> <span class="o">&lt;</span> <span class="n">offsets</span><span class="p">.</span><span class="n">size</span><span class="p">();</span> <span class="o">++</span><span class="n">idx</span><span class="p">)</span>
-<a name="line-1016"></a> <span class="p">{</span>
-<a name="line-1017"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Put_uint32</span><span class="p">(</span><span class="n">offsets</span><span class="p">[</span><span class="n">idx</span><span class="p">]);</span>
-<a name="line-1018"></a> <span class="p">}</span>
-<a name="line-1019"></a>
-<a name="line-1020"></a> <span class="n">QByteArray</span> <span class="n">compressedData</span><span class="p">;</span>
-<a name="line-1021"></a> <span class="n">compressedData</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="n">compressedFile</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
-<a name="line-1022"></a> <span class="n">compressedFile</span><span class="p">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-1023"></a> <span class="n">compressedDataStream</span><span class="p">.</span><span class="n">readRawData</span><span class="p">(</span><span class="n">compressedData</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">compressedData</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
-<a name="line-1024"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Put</span><span class="p">(</span><span class="n">compressedData</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">compressedData</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
-<a name="line-1025"></a>
-<a name="line-1026"></a> <span class="n">compressedFile</span><span class="p">.</span><span class="n">remove</span><span class="p">();</span>
-<a name="line-1027"></a> <span class="n">originalFile</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
-<a name="line-1028"></a>
-<a name="line-1029"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Put_uint32</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-1030"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Put_uint32</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-1031"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Put_uint32</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-1032"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Put_uint32</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-1033"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Put_uint32</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-1034"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Put_uint32</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-1035"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Put_uint32</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-1036"></a>
-<a name="line-1037"></a> <span class="n">AutoPtr</span><span class="o">&lt;</span><span class="n">dng_memory_block</span><span class="o">&gt;</span> <span class="n">block</span><span class="p">(</span><span class="n">host</span><span class="p">.</span><span class="n">Allocate</span><span class="p">(</span><span class="n">tempDataStream</span><span class="p">.</span><span class="n">Length</span><span class="p">()));</span>
-<a name="line-1038"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">SetReadPosition</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-1039"></a> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Get</span><span class="p">(</span><span class="n">block</span><span class="o">-&gt;</span><span class="n">Buffer</span><span class="p">(),</span> <span class="n">tempDataStream</span><span class="p">.</span><span class="n">Length</span><span class="p">());</span>
-<a name="line-1040"></a>
-<a name="line-1041"></a> <span class="n">dng_md5_printer</span> <span class="n">md5</span><span class="p">;</span>
-<a name="line-1042"></a> <span class="n">md5</span><span class="p">.</span><span class="n">Process</span><span class="p">(</span><span class="n">block</span><span class="o">-&gt;</span><span class="n">Buffer</span><span class="p">(),</span> <span class="n">block</span><span class="o">-&gt;</span><span class="n">LogicalSize</span><span class="p">());</span>
-<a name="line-1043"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetOriginalRawFileData</span><span class="p">(</span><span class="n">block</span><span class="p">);</span>
-<a name="line-1044"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetOriginalRawFileDigest</span><span class="p">(</span><span class="n">md5</span><span class="p">.</span><span class="n">Result</span><span class="p">());</span>
-<a name="line-1045"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">ValidateOriginalRawFileDigest</span><span class="p">();</span>
-<a name="line-1046"></a> <span class="p">}</span>
-<a name="line-1047"></a>
-<a name="line-1048"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">)</span>
-<a name="line-1049"></a> <span class="p">{</span>
-<a name="line-1050"></a> <span class="k">return</span> <span class="n">PROCESSCANCELED</span><span class="p">;</span>
-<a name="line-1051"></a> <span class="p">}</span>
-<a name="line-1052"></a>
-<a name="line-1053"></a> <span class="c1">// -----------------------------------------------------------------------------------------</span>
-<a name="line-1054"></a>
-<a name="line-1055"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Build DNG Negative&quot;</span> <span class="p">;</span>
-<a name="line-1056"></a>
-<a name="line-1057"></a> <span class="c1">// Assign Raw image data.</span>
-<a name="line-1058"></a>
-<a name="line-1059"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SetStage1Image</span><span class="p">(</span><span class="n">image</span><span class="p">);</span>
-<a name="line-1060"></a>
-<a name="line-1061"></a> <span class="c1">// Compute linearized and range mapped image</span>
-<a name="line-1062"></a>
-<a name="line-1063"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">BuildStage2Image</span><span class="p">(</span><span class="n">host</span><span class="p">);</span>
-<a name="line-1064"></a>
-<a name="line-1065"></a> <span class="c1">// Compute demosaiced image (used by preview and thumbnail)</span>
-<a name="line-1066"></a>
-<a name="line-1067"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">BuildStage3Image</span><span class="p">(</span><span class="n">host</span><span class="p">);</span>
-<a name="line-1068"></a>
-<a name="line-1069"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">SynchronizeMetadata</span><span class="p">();</span>
-<a name="line-1070"></a> <span class="n">negative</span><span class="o">-&gt;</span><span class="n">RebuildIPTC</span><span class="p">(</span><span class="nb">true</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
-<a name="line-1071"></a>
-<a name="line-1072"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">)</span>
-<a name="line-1073"></a> <span class="p">{</span>
-<a name="line-1074"></a> <span class="k">return</span> <span class="n">PROCESSCANCELED</span><span class="p">;</span>
-<a name="line-1075"></a> <span class="p">}</span>
-<a name="line-1076"></a>
-<a name="line-1077"></a> <span class="c1">// -----------------------------------------------------------------------------------------</span>
-<a name="line-1078"></a>
-<a name="line-1079"></a> <span class="n">dng_preview_list</span> <span class="n">previewList</span><span class="p">;</span>
-<a name="line-1080"></a>
-<a name="line-1081"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">previewMode</span> <span class="o">!=</span> <span class="n">DNGWriter</span><span class="o">::</span><span class="n">NONE</span><span class="p">)</span>
-<a name="line-1082"></a> <span class="p">{</span>
-<a name="line-1083"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: DNG preview image creation&quot;</span> <span class="p">;</span>
-<a name="line-1084"></a>
-<a name="line-1085"></a> <span class="c1">// Construct a preview image as TIFF format.</span>
-<a name="line-1086"></a>
-<a name="line-1087"></a> <span class="n">AutoPtr</span><span class="o">&lt;</span><span class="n">dng_image</span><span class="o">&gt;</span> <span class="n">tiffImage</span><span class="p">;</span>
-<a name="line-1088"></a> <span class="n">dng_render</span> <span class="nf">tiff_render</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="o">*</span><span class="n">negative</span><span class="p">);</span>
-<a name="line-1089"></a> <span class="n">tiff_render</span><span class="p">.</span><span class="n">SetFinalSpace</span><span class="p">(</span><span class="n">dng_space_sRGB</span><span class="o">::</span><span class="n">Get</span><span class="p">());</span>
-<a name="line-1090"></a> <span class="n">tiff_render</span><span class="p">.</span><span class="n">SetFinalPixelType</span><span class="p">(</span><span class="n">ttByte</span><span class="p">);</span>
-<a name="line-1091"></a> <span class="n">tiff_render</span><span class="p">.</span><span class="n">SetMaximumSize</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">previewMode</span> <span class="o">==</span> <span class="n">MEDIUM</span> <span class="o">?</span> <span class="mi">1280</span> <span class="o">:</span> <span class="n">width</span><span class="p">);</span>
-<a name="line-1092"></a> <span class="n">tiffImage</span><span class="p">.</span><span class="n">Reset</span><span class="p">(</span><span class="n">tiff_render</span><span class="p">.</span><span class="n">Render</span><span class="p">());</span>
-<a name="line-1093"></a>
-<a name="line-1094"></a> <span class="n">dng_image_writer</span> <span class="n">tiff_writer</span><span class="p">;</span>
-<a name="line-1095"></a> <span class="n">AutoPtr</span><span class="o">&lt;</span><span class="n">dng_memory_stream</span><span class="o">&gt;</span> <span class="n">dms</span><span class="p">(</span><span class="k">new</span> <span class="n">dng_memory_stream</span><span class="p">(</span><span class="n">gDefaultDNGMemoryAllocator</span><span class="p">));</span>
-<a name="line-1096"></a>
-<a name="line-1097"></a> <span class="n">tiff_writer</span><span class="p">.</span><span class="n">WriteTIFF</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="o">*</span><span class="n">dms</span><span class="p">,</span> <span class="o">*</span><span class="n">tiffImage</span><span class="p">.</span><span class="n">Get</span><span class="p">(),</span> <span class="n">piRGB</span><span class="p">,</span>
-<a name="line-1098"></a> <span class="n">ccUncompressed</span><span class="p">,</span> <span class="n">negative</span><span class="p">.</span><span class="n">Get</span><span class="p">(),</span> <span class="o">&amp;</span><span class="n">tiff_render</span><span class="p">.</span><span class="n">FinalSpace</span><span class="p">());</span>
-<a name="line-1099"></a>
-<a name="line-1100"></a> <span class="c1">// Write TIFF preview image data to a temp JPEG file</span>
-<a name="line-1101"></a>
-<a name="line-1102"></a> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="kt">char</span><span class="o">&gt;</span> <span class="n">tiff_mem_buffer</span><span class="p">(</span><span class="n">dms</span><span class="o">-&gt;</span><span class="n">Length</span><span class="p">());</span>
-<a name="line-1103"></a> <span class="n">dms</span><span class="o">-&gt;</span><span class="n">SetReadPosition</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-1104"></a> <span class="n">dms</span><span class="o">-&gt;</span><span class="n">Get</span><span class="p">(</span><span class="o">&amp;</span><span class="n">tiff_mem_buffer</span><span class="p">.</span><span class="n">front</span><span class="p">(),</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">tiff_mem_buffer</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
-<a name="line-1105"></a> <span class="n">dms</span><span class="p">.</span><span class="n">Reset</span><span class="p">();</span>
-<a name="line-1106"></a>
-<a name="line-1107"></a> <span class="n">QImage</span> <span class="n">pre_image</span><span class="p">;</span>
-<a name="line-1108"></a>
-<a name="line-1109"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">pre_image</span><span class="p">.</span><span class="n">loadFromData</span><span class="p">((</span><span class="n">uchar</span><span class="o">*</span><span class="p">)</span><span class="o">&amp;</span><span class="n">tiff_mem_buffer</span><span class="p">.</span><span class="n">front</span><span class="p">(),</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">tiff_mem_buffer</span><span class="p">.</span><span class="n">size</span><span class="p">(),</span> <span class="s">&quot;TIFF&quot;</span><span class="p">))</span>
-<a name="line-1110"></a> <span class="p">{</span>
-<a name="line-1111"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Cannot load TIFF preview data in memory. Aborted...&quot;</span> <span class="p">;</span>
-<a name="line-1112"></a> <span class="k">return</span> <span class="n">PROCESSFAILED</span><span class="p">;</span>
-<a name="line-1113"></a> <span class="p">}</span>
-<a name="line-1114"></a>
-<a name="line-1115"></a> <span class="n">QTemporaryFile</span> <span class="n">previewFile</span><span class="p">;</span>
-<a name="line-1116"></a>
-<a name="line-1117"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">previewFile</span><span class="p">.</span><span class="n">open</span><span class="p">())</span>
-<a name="line-1118"></a> <span class="p">{</span>
-<a name="line-1119"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Cannot open temporary file to write JPEG preview. Aborted...&quot;</span> <span class="p">;</span>
-<a name="line-1120"></a> <span class="k">return</span> <span class="n">PROCESSFAILED</span><span class="p">;</span>
-<a name="line-1121"></a> <span class="p">}</span>
-<a name="line-1122"></a>
-<a name="line-1123"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">pre_image</span><span class="p">.</span><span class="n">save</span><span class="p">(</span><span class="n">previewFile</span><span class="p">.</span><span class="n">fileName</span><span class="p">(),</span> <span class="s">&quot;JPEG&quot;</span><span class="p">,</span> <span class="mi">90</span><span class="p">))</span>
-<a name="line-1124"></a> <span class="p">{</span>
-<a name="line-1125"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Cannot save file to write JPEG preview. Aborted...&quot;</span> <span class="p">;</span>
-<a name="line-1126"></a> <span class="k">return</span> <span class="n">PROCESSFAILED</span><span class="p">;</span>
-<a name="line-1127"></a> <span class="p">}</span>
-<a name="line-1128"></a>
-<a name="line-1129"></a> <span class="c1">// Load JPEG preview file data in DNG preview container.</span>
-<a name="line-1130"></a>
-<a name="line-1131"></a> <span class="n">AutoPtr</span><span class="o">&lt;</span><span class="n">dng_jpeg_preview</span><span class="o">&gt;</span> <span class="n">jpeg_preview</span><span class="p">;</span>
-<a name="line-1132"></a> <span class="n">jpeg_preview</span><span class="p">.</span><span class="n">Reset</span><span class="p">(</span><span class="k">new</span> <span class="n">dng_jpeg_preview</span><span class="p">);</span>
-<a name="line-1133"></a> <span class="n">jpeg_preview</span><span class="o">-&gt;</span><span class="n">fPhotometricInterpretation</span> <span class="o">=</span> <span class="n">piYCbCr</span><span class="p">;</span>
-<a name="line-1134"></a> <span class="n">jpeg_preview</span><span class="o">-&gt;</span><span class="n">fPreviewSize</span><span class="p">.</span><span class="n">v</span> <span class="o">=</span> <span class="n">pre_image</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
-<a name="line-1135"></a> <span class="n">jpeg_preview</span><span class="o">-&gt;</span><span class="n">fPreviewSize</span><span class="p">.</span><span class="n">h</span> <span class="o">=</span> <span class="n">pre_image</span><span class="p">.</span><span class="n">width</span><span class="p">();</span>
-<a name="line-1136"></a> <span class="n">jpeg_preview</span><span class="o">-&gt;</span><span class="n">fCompressedData</span><span class="p">.</span><span class="n">Reset</span><span class="p">(</span><span class="n">host</span><span class="p">.</span><span class="n">Allocate</span><span class="p">(</span><span class="n">previewFile</span><span class="p">.</span><span class="n">size</span><span class="p">()));</span>
-<a name="line-1137"></a>
-<a name="line-1138"></a> <span class="n">QDataStream</span> <span class="nf">previewStream</span><span class="p">(</span> <span class="o">&amp;</span><span class="n">previewFile</span> <span class="p">);</span>
-<a name="line-1139"></a> <span class="n">previewStream</span><span class="p">.</span><span class="n">readRawData</span><span class="p">(</span><span class="n">jpeg_preview</span><span class="o">-&gt;</span><span class="n">fCompressedData</span><span class="o">-&gt;</span><span class="n">Buffer_char</span><span class="p">(),</span> <span class="n">previewFile</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
-<a name="line-1140"></a>
-<a name="line-1141"></a> <span class="n">AutoPtr</span><span class="o">&lt;</span><span class="n">dng_preview</span><span class="o">&gt;</span> <span class="n">pp</span><span class="p">(</span> <span class="k">dynamic_cast</span><span class="o">&lt;</span><span class="n">dng_preview</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">jpeg_preview</span><span class="p">.</span><span class="n">Release</span><span class="p">())</span> <span class="p">);</span>
-<a name="line-1142"></a> <span class="n">previewList</span><span class="p">.</span><span class="n">Append</span><span class="p">(</span><span class="n">pp</span><span class="p">);</span>
-<a name="line-1143"></a>
-<a name="line-1144"></a> <span class="n">previewFile</span><span class="p">.</span><span class="n">remove</span><span class="p">();</span>
-<a name="line-1145"></a> <span class="p">}</span>
-<a name="line-1146"></a>
-<a name="line-1147"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">)</span>
-<a name="line-1148"></a> <span class="p">{</span>
-<a name="line-1149"></a> <span class="k">return</span> <span class="n">PROCESSCANCELED</span><span class="p">;</span>
-<a name="line-1150"></a> <span class="p">}</span>
-<a name="line-1151"></a>
-<a name="line-1152"></a> <span class="c1">// -----------------------------------------------------------------------------------------</span>
-<a name="line-1153"></a>
-<a name="line-1154"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: DNG thumbnail creation&quot;</span> <span class="p">;</span>
-<a name="line-1155"></a>
-<a name="line-1156"></a> <span class="n">dng_image_preview</span> <span class="n">thumbnail</span><span class="p">;</span>
-<a name="line-1157"></a> <span class="n">dng_render</span> <span class="nf">thumbnail_render</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="o">*</span><span class="n">negative</span><span class="p">);</span>
-<a name="line-1158"></a> <span class="n">thumbnail_render</span><span class="p">.</span><span class="n">SetFinalSpace</span><span class="p">(</span><span class="n">dng_space_sRGB</span><span class="o">::</span><span class="n">Get</span><span class="p">());</span>
-<a name="line-1159"></a> <span class="n">thumbnail_render</span><span class="p">.</span><span class="n">SetFinalPixelType</span><span class="p">(</span><span class="n">ttByte</span><span class="p">);</span>
-<a name="line-1160"></a> <span class="n">thumbnail_render</span><span class="p">.</span><span class="n">SetMaximumSize</span><span class="p">(</span><span class="mi">256</span><span class="p">);</span>
-<a name="line-1161"></a> <span class="n">thumbnail</span><span class="p">.</span><span class="n">fImage</span><span class="p">.</span><span class="n">Reset</span><span class="p">(</span><span class="n">thumbnail_render</span><span class="p">.</span><span class="n">Render</span><span class="p">());</span>
-<a name="line-1162"></a>
-<a name="line-1163"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">)</span>
-<a name="line-1164"></a> <span class="p">{</span>
-<a name="line-1165"></a> <span class="k">return</span> <span class="n">PROCESSCANCELED</span><span class="p">;</span>
-<a name="line-1166"></a> <span class="p">}</span>
-<a name="line-1167"></a>
-<a name="line-1168"></a> <span class="c1">// -----------------------------------------------------------------------------------------</span>
-<a name="line-1169"></a>
-<a name="line-1170"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Creating DNG file &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">outputInfo</span><span class="p">.</span><span class="n">fileName</span><span class="p">()</span> <span class="p">;</span>
-<a name="line-1171"></a>
-<a name="line-1172"></a> <span class="n">dng_image_writer</span> <span class="n">writer</span><span class="p">;</span>
-<a name="line-1173"></a> <span class="n">dng_file_stream</span> <span class="nf">filestream</span><span class="p">(</span><span class="n">QFile</span><span class="o">::</span><span class="n">encodeName</span><span class="p">(</span><span class="n">dngFilePath</span><span class="p">).</span><span class="n">constData</span><span class="p">(),</span> <span class="nb">true</span><span class="p">);</span>
-<a name="line-1174"></a>
-<a name="line-1175"></a> <span class="n">writer</span><span class="p">.</span><span class="n">WriteDNG</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="n">filestream</span><span class="p">,</span> <span class="o">*</span><span class="n">negative</span><span class="p">.</span><span class="n">Get</span><span class="p">(),</span> <span class="n">thumbnail</span><span class="p">,</span>
-<a name="line-1176"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">jpegLossLessCompression</span> <span class="o">?</span> <span class="nl">ccJPEG</span> <span class="p">:</span> <span class="n">ccUncompressed</span><span class="p">,</span>
-<a name="line-1177"></a> <span class="o">&amp;</span><span class="n">previewList</span><span class="p">);</span>
-<a name="line-1178"></a>
-<a name="line-1179"></a> <span class="c1">// -----------------------------------------------------------------------------------------</span>
-<a name="line-1180"></a> <span class="c1">// Metadata makernote cleanup using Exiv2 for some RAW file types</span>
-<a name="line-1181"></a> <span class="c1">// See bug #204437 and #210371, and write XMP Sidecar if necessary</span>
-<a name="line-1182"></a> <span class="c1">// We disable writing to RAW files, see bug #381432</span>
-<a name="line-1183"></a><span class="cm">/*</span>
-<a name="line-1184"></a><span class="cm"> if (meta.load(dngFilePath))</span>
-<a name="line-1185"></a><span class="cm"> {</span>
-<a name="line-1186"></a><span class="cm"> if (inputInfo.suffix().toUpper() == QLatin1String(&quot;ORF&quot;))</span>
-<a name="line-1187"></a><span class="cm"> {</span>
-<a name="line-1188"></a><span class="cm"> qCDebug(DIGIKAM_GENERAL_LOG) &lt;&lt; &quot;DNGWriter: cleanup makernotes using Exiv2&quot; ;</span>
-<a name="line-1189"></a>
-<a name="line-1190"></a><span class="cm"> meta.setWriteRawFiles(true);</span>
-<a name="line-1191"></a><span class="cm"> meta.removeExifTag(&quot;Exif.OlympusIp.BlackLevel&quot;, false);</span>
-<a name="line-1192"></a><span class="cm"> }</span>
-<a name="line-1193"></a><span class="cm"> else</span>
-<a name="line-1194"></a><span class="cm"> {</span>
-<a name="line-1195"></a><span class="cm"> // Don&#39;t touch DNG file and create XMP sidecar depending of host application settings.</span>
-<a name="line-1196"></a><span class="cm"> meta.setWriteRawFiles(false);</span>
-<a name="line-1197"></a><span class="cm"> }</span>
-<a name="line-1198"></a>
-<a name="line-1199"></a><span class="cm"> meta.applyChanges();</span>
-<a name="line-1200"></a><span class="cm"> }</span>
-<a name="line-1201"></a><span class="cm">*/</span>
-<a name="line-1202"></a> <span class="c1">// -----------------------------------------------------------------------------------------</span>
-<a name="line-1203"></a> <span class="c1">// update modification time if desired</span>
-<a name="line-1204"></a>
-<a name="line-1205"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">updateFileDate</span><span class="p">)</span>
-<a name="line-1206"></a> <span class="p">{</span>
-<a name="line-1207"></a> <span class="n">QDateTime</span> <span class="n">date</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getItemDateTime</span><span class="p">();</span>
-<a name="line-1208"></a>
-<a name="line-1209"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: Setting modification date from meta data: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">date</span><span class="p">.</span><span class="n">toString</span><span class="p">();</span>
-<a name="line-1210"></a>
-<a name="line-1211"></a> <span class="c1">// don&#39;t touch access time</span>
-<a name="line-1212"></a>
-<a name="line-1213"></a> <span class="n">QT_STATBUF</span> <span class="n">st</span><span class="p">;</span>
-<a name="line-1214"></a>
-<a name="line-1215"></a> <span class="k">if</span> <span class="p">(</span><span class="n">QT_STAT</span><span class="p">(</span><span class="n">QFile</span><span class="o">::</span><span class="n">encodeName</span><span class="p">(</span><span class="n">dngFilePath</span><span class="p">).</span><span class="n">constData</span><span class="p">(),</span> <span class="o">&amp;</span><span class="n">st</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-1216"></a> <span class="p">{</span>
-<a name="line-1217"></a> <span class="k">struct</span> <span class="n">utimbuf</span> <span class="n">ut</span><span class="p">;</span>
-<a name="line-1218"></a> <span class="n">ut</span><span class="p">.</span><span class="n">actime</span> <span class="o">=</span> <span class="n">st</span><span class="p">.</span><span class="n">st_atime</span><span class="p">;</span>
-<a name="line-1219"></a> <span class="n">ut</span><span class="p">.</span><span class="n">modtime</span> <span class="o">=</span> <span class="n">date</span><span class="p">.</span><span class="n">toTime_t</span><span class="p">();</span>
-<a name="line-1220"></a> <span class="n">utime</span><span class="p">(</span><span class="n">QFile</span><span class="o">::</span><span class="n">encodeName</span><span class="p">(</span><span class="n">dngFilePath</span><span class="p">).</span><span class="n">constData</span><span class="p">(),</span> <span class="o">&amp;</span><span class="n">ut</span><span class="p">);</span>
-<a name="line-1221"></a> <span class="p">}</span>
-<a name="line-1222"></a> <span class="p">}</span>
-<a name="line-1223"></a> <span class="p">}</span>
-<a name="line-1224"></a>
-<a name="line-1225"></a> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">dng_exception</span><span class="o">&amp;</span> <span class="n">exception</span><span class="p">)</span>
-<a name="line-1226"></a> <span class="p">{</span>
-<a name="line-1227"></a> <span class="kt">int</span> <span class="n">ret</span> <span class="o">=</span> <span class="n">exception</span><span class="p">.</span><span class="n">ErrorCode</span><span class="p">();</span>
-<a name="line-1228"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: DNG SDK exception code (&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">ret</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;)&quot;</span> <span class="p">;</span>
-<a name="line-1229"></a> <span class="k">return</span> <span class="n">DNGSDKINTERNALERROR</span><span class="p">;</span>
-<a name="line-1230"></a> <span class="p">}</span>
-<a name="line-1231"></a>
-<a name="line-1232"></a> <span class="k">catch</span> <span class="p">(...)</span>
-<a name="line-1233"></a> <span class="p">{</span>
-<a name="line-1234"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: DNG SDK exception code unknow&quot;</span> <span class="p">;</span>
-<a name="line-1235"></a> <span class="k">return</span> <span class="n">DNGSDKINTERNALERROR</span><span class="p">;</span>
-<a name="line-1236"></a> <span class="p">}</span>
-<a name="line-1237"></a>
-<a name="line-1238"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DNGWriter: DNG conversion complete...&quot;</span> <span class="p">;</span>
-<a name="line-1239"></a>
-<a name="line-1240"></a> <span class="k">return</span> <span class="n">PROCESSCOMPLETE</span><span class="p">;</span>
-<a name="line-1241"></a><span class="p">}</span>
-<a name="line-1242"></a>
-<a name="line-1243"></a><span class="p">}</span> <span class="c1">// namespace Digikam</span>
+<a name="line-92"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">FakeServer</span><span class="o">::</span><span class="n">Request</span><span class="o">&gt;</span> <span class="n">requests</span> <span class="o">=</span> <span class="n">m_server</span><span class="o">-&gt;</span><span class="n">getRequest</span><span class="p">();</span>
+<a name="line-93"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">requests</span><span class="p">.</span><span class="n">size</span><span class="p">(),</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-94"></a>
+<a name="line-95"></a><span class="hll"> <span class="n">FakeServer</span><span class="o">::</span><span class="n">Request</span> <span class="n">request</span> <span class="o">=</span> <span class="n">requests</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-96"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">request</span><span class="p">.</span><span class="n">agent</span><span class="p">,</span> <span class="n">m_mediaWiki</span><span class="o">-&gt;</span><span class="n">userAgent</span><span class="p">());</span>
+<a name="line-97"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">request</span><span class="p">.</span><span class="n">type</span><span class="p">,</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;GET&quot;</span><span class="p">));</span>
+<a name="line-98"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">request</span><span class="p">.</span><span class="n">value</span><span class="p">,</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;/?format=xml&amp;action=logout&quot;</span><span class="p">));</span>
+<a name="line-99"></a> <span class="p">}</span>
+<a name="line-100"></a>
+<a name="line-101"></a> <span class="kt">void</span> <span class="n">cleanupTestCase</span><span class="p">()</span>
+<a name="line-102"></a> <span class="p">{</span>
+<a name="line-103"></a> <span class="k">delete</span> <span class="k">this</span><span class="o">-&gt;</span><span class="n">m_mediaWiki</span><span class="p">;</span>
+<a name="line-104"></a> <span class="k">delete</span> <span class="k">this</span><span class="o">-&gt;</span><span class="n">m_server</span><span class="p">;</span>
+<a name="line-105"></a> <span class="p">}</span>
+<a name="line-106"></a>
+<a name="line-107"></a><span class="k">private</span><span class="o">:</span>
+<a name="line-108"></a>
+<a name="line-109"></a> <span class="kt">int</span> <span class="n">logoutCount</span><span class="p">;</span>
+<a name="line-110"></a><span class="hll"> <span class="n">QString</span> <span class="n">request</span><span class="p">;</span><span class='error2'>&lt;--- Shadowed declaration</span>
+</span><a name="line-111"></a> <span class="n">Iface</span><span class="o">*</span> <span class="n">m_mediaWiki</span><span class="p">;</span>
+<a name="line-112"></a> <span class="n">FakeServer</span><span class="o">*</span> <span class="n">m_server</span><span class="p">;</span>
+<a name="line-113"></a><span class="p">};</span>
+<a name="line-114"></a>
+<a name="line-115"></a><span class="n">QTEST_MAIN</span><span class="p">(</span><span class="n">LogoutTest</span><span class="p">)</span>
+<a name="line-116"></a>
+<a name="line-117"></a><span class="cp">#include</span> <span class="cpf">&quot;logouttest.moc&quot;</span><span class="cp"></span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/17.html b/static/reports/cppcheck/master/17.html
index 6ba9dbea2..6544d77d5 100644
--- a/static/reports/cppcheck/master/17.html
+++ b/static/reports/cppcheck/master/17.html
@@ -1,1815 +1,2343 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/tests/albummodel/albummodeltest.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/utilities/geolocation/geoiface/items/gpsitemcontainer.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> albummodeltest.cpp</p>
-<a href='17.html#line-209'> shadowVar 209</a><a href='17.html#line-209'> shadowVar 209</a><a href='17.html#line-209'> shadowVar 209</a><a href='17.html#line-209'> shadowVar 209</a><a href='17.html#line-209'> shadowVar 209</a><a href='17.html#line-209'> shadowVar 209</a><a href='17.html#line-209'> shadowVar 209</a><a href='17.html#line-209'> shadowVar 209</a><a href='17.html#line-209'> shadowVar 209</a><a href='17.html#line-209'> shadowVar 209</a><a href='17.html#line-221'> shadowVar 221</a><a href='17.html#line-222'> shadowVar 222</a><a href='17.html#line-224'> shadowVar 224</a><a href='17.html#line-226'> shadowVar 226</a><a href='17.html#line-240'> shadowVar 240</a><a href='17.html#line-241'> shadowVar 241</a><a href='17.html#line-243'> shadowVar 243</a><a href='17.html#line-244'> shadowVar 244</a><a href='17.html#line-246'> shadowVar 246</a><a href='17.html#line-248'> shadowVar 248</a>
+ <p id="filename"><a href="index.html">Defects:</a> gpsitemcontainer.cpp</p>
+<a href='17.html#line-840'> shadowVar 840</a><a href='17.html#line-953'> shadowVar 953</a>
</div>
<div id="content">
-<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
-100
-101
-102
-103
-104
-105
-106
-107
-108
-109
-110
-111
-112
-113
-114
-115
-116
-117
-118
-119
-120
-121
-122
-123
-124
-125
-126
-127
-128
-129
-130
-131
-132
-133
-134
-135
-136
-137
-138
-139
-140
-141
-142
-143
-144
-145
-146
-147
-148
-149
-150
-151
-152
-153
-154
-155
-156
-157
-158
-159
-160
-161
-162
-163
-164
-165
-166
-167
-168
-169
-170
-171
-172
-173
-174
-175
-176
-177
-178
-179
-180
-181
-182
-183
-184
-185
-186
-187
-188
-189
-190
-191
-192
-193
-194
-195
-196
-197
-198
-199
-200
-201
-202
-203
-204
-205
-206
-207
-208
-209
-210
-211
-212
-213
-214
-215
-216
-217
-218
-219
-220
-221
-222
-223
-224
-225
-226
-227
-228
-229
-230
-231
-232
-233
-234
-235
-236
-237
-238
-239
-240
-241
-242
-243
-244
-245
-246
-247
-248
-249
-250
-251
-252
-253
-254
-255
-256
-257
-258
-259
-260
-261
-262
-263
-264
-265
-266
-267
-268
-269
-270
-271
-272
-273
-274
-275
-276
-277
-278
-279
-280
-281
-282
-283
-284
-285
-286
-287
-288
-289
-290
-291
-292
-293
-294
-295
-296
-297
-298
-299
-300
-301
-302
-303
-304
-305
-306
-307
-308
-309
-310
-311
-312
-313
-314
-315
-316
-317
-318
-319
-320
-321
-322
-323
-324
-325
-326
-327
-328
-329
-330
-331
-332
-333
-334
-335
-336
-337
-338
-339
-340
-341
-342
-343
-344
-345
-346
-347
-348
-349
-350
-351
-352
-353
-354
-355
-356
-357
-358
-359
-360
-361
-362
-363
-364
-365
-366
-367
-368
-369
-370
-371
-372
-373
-374
-375
-376
-377
-378
-379
-380
-381
-382
-383
-384
-385
-386
-387
-388
-389
-390
-391
-392
-393
-394
-395
-396
-397
-398
-399
-400
-401
-402
-403
-404
-405
-406
-407
-408
-409
-410
-411
-412
-413
-414
-415
-416
-417
-418
-419
-420
-421
-422
-423
-424
-425
-426
-427
-428
-429
-430
-431
-432
-433
-434
-435
-436
-437
-438
-439
-440
-441
-442
-443
-444
-445
-446
-447
-448
-449
-450
-451
-452
-453
-454
-455
-456
-457
-458
-459
-460
-461
-462
-463
-464
-465
-466
-467
-468
-469
-470
-471
-472
-473
-474
-475
-476
-477
-478
-479
-480
-481
-482
-483
-484
-485
-486
-487
-488
-489
-490
-491
-492
-493
-494
-495
-496
-497
-498
-499
-500
-501
-502
-503
-504
-505
-506
-507
-508
-509
-510
-511
-512
-513
-514
-515
-516
-517
-518
-519
-520
-521
-522
-523
-524
-525
-526
-527
-528
-529
-530
-531
-532
-533
-534
-535
-536
-537
-538
-539
-540
-541
-542
-543
-544
-545
-546
-547
-548
-549
-550
-551
-552
-553
-554
-555
-556
-557
-558
-559
-560
-561
-562
-563
-564
-565
-566
-567
-568
-569
-570
-571
-572
-573
-574
-575
-576
-577
-578
-579
-580
-581
-582
-583
-584
-585
-586
-587
-588
-589
-590
-591
-592
-593
-594
-595
-596
-597
-598
-599
-600
-601
-602
-603
-604
-605
-606
-607
-608
-609
-610
-611
-612
-613
-614
-615
-616
-617
-618
-619
-620
-621
-622
-623
-624
-625
-626
-627
-628
-629
-630
-631
-632
-633
-634
-635
-636
-637
-638
-639
-640
-641
-642
-643
-644
-645
-646
-647
-648
-649
-650
-651
-652
-653
-654
-655
-656
-657
-658
-659
-660
-661
-662
-663
-664
-665
-666
-667
-668
-669
-670
-671
-672
-673
-674
-675
-676
-677
-678
-679
-680
-681
-682
-683
-684
-685
-686
-687
-688
-689
-690
-691
-692
-693
-694
-695
-696
-697
-698
-699
-700
-701
-702
-703
-704
-705
-706
-707
-708
-709
-710
-711
-712
-713
-714
-715
-716
-717
-718
-719
-720
-721
-722
-723
-724
-725
-726
-727
-728
-729
-730
-731
-732
-733
-734
-735
-736
-737
-738
-739
-740
-741
-742
-743
-744
-745
-746
-747
-748
-749
-750
-751
-752
-753
-754
-755
-756
-757
-758
-759
-760
-761
-762
-763
-764
-765
-766
-767
-768
-769
-770
-771
-772
-773
-774
-775
-776
-777
-778
-779
-780
-781
-782
-783
-784
-785
-786
-787
-788
-789
-790
-791
-792
-793
-794
-795
-796
-797
-798
-799
-800
-801
-802
-803
-804
-805
-806
-807
-808
-809
-810
-811
-812
-813
-814
-815
-816
-817
-818
-819
-820
-821
-822
-823
-824
-825
-826
-827
-828
-829
-830
-831
-832
-833
-834
-835</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
+<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+ 100
+ 101
+ 102
+ 103
+ 104
+ 105
+ 106
+ 107
+ 108
+ 109
+ 110
+ 111
+ 112
+ 113
+ 114
+ 115
+ 116
+ 117
+ 118
+ 119
+ 120
+ 121
+ 122
+ 123
+ 124
+ 125
+ 126
+ 127
+ 128
+ 129
+ 130
+ 131
+ 132
+ 133
+ 134
+ 135
+ 136
+ 137
+ 138
+ 139
+ 140
+ 141
+ 142
+ 143
+ 144
+ 145
+ 146
+ 147
+ 148
+ 149
+ 150
+ 151
+ 152
+ 153
+ 154
+ 155
+ 156
+ 157
+ 158
+ 159
+ 160
+ 161
+ 162
+ 163
+ 164
+ 165
+ 166
+ 167
+ 168
+ 169
+ 170
+ 171
+ 172
+ 173
+ 174
+ 175
+ 176
+ 177
+ 178
+ 179
+ 180
+ 181
+ 182
+ 183
+ 184
+ 185
+ 186
+ 187
+ 188
+ 189
+ 190
+ 191
+ 192
+ 193
+ 194
+ 195
+ 196
+ 197
+ 198
+ 199
+ 200
+ 201
+ 202
+ 203
+ 204
+ 205
+ 206
+ 207
+ 208
+ 209
+ 210
+ 211
+ 212
+ 213
+ 214
+ 215
+ 216
+ 217
+ 218
+ 219
+ 220
+ 221
+ 222
+ 223
+ 224
+ 225
+ 226
+ 227
+ 228
+ 229
+ 230
+ 231
+ 232
+ 233
+ 234
+ 235
+ 236
+ 237
+ 238
+ 239
+ 240
+ 241
+ 242
+ 243
+ 244
+ 245
+ 246
+ 247
+ 248
+ 249
+ 250
+ 251
+ 252
+ 253
+ 254
+ 255
+ 256
+ 257
+ 258
+ 259
+ 260
+ 261
+ 262
+ 263
+ 264
+ 265
+ 266
+ 267
+ 268
+ 269
+ 270
+ 271
+ 272
+ 273
+ 274
+ 275
+ 276
+ 277
+ 278
+ 279
+ 280
+ 281
+ 282
+ 283
+ 284
+ 285
+ 286
+ 287
+ 288
+ 289
+ 290
+ 291
+ 292
+ 293
+ 294
+ 295
+ 296
+ 297
+ 298
+ 299
+ 300
+ 301
+ 302
+ 303
+ 304
+ 305
+ 306
+ 307
+ 308
+ 309
+ 310
+ 311
+ 312
+ 313
+ 314
+ 315
+ 316
+ 317
+ 318
+ 319
+ 320
+ 321
+ 322
+ 323
+ 324
+ 325
+ 326
+ 327
+ 328
+ 329
+ 330
+ 331
+ 332
+ 333
+ 334
+ 335
+ 336
+ 337
+ 338
+ 339
+ 340
+ 341
+ 342
+ 343
+ 344
+ 345
+ 346
+ 347
+ 348
+ 349
+ 350
+ 351
+ 352
+ 353
+ 354
+ 355
+ 356
+ 357
+ 358
+ 359
+ 360
+ 361
+ 362
+ 363
+ 364
+ 365
+ 366
+ 367
+ 368
+ 369
+ 370
+ 371
+ 372
+ 373
+ 374
+ 375
+ 376
+ 377
+ 378
+ 379
+ 380
+ 381
+ 382
+ 383
+ 384
+ 385
+ 386
+ 387
+ 388
+ 389
+ 390
+ 391
+ 392
+ 393
+ 394
+ 395
+ 396
+ 397
+ 398
+ 399
+ 400
+ 401
+ 402
+ 403
+ 404
+ 405
+ 406
+ 407
+ 408
+ 409
+ 410
+ 411
+ 412
+ 413
+ 414
+ 415
+ 416
+ 417
+ 418
+ 419
+ 420
+ 421
+ 422
+ 423
+ 424
+ 425
+ 426
+ 427
+ 428
+ 429
+ 430
+ 431
+ 432
+ 433
+ 434
+ 435
+ 436
+ 437
+ 438
+ 439
+ 440
+ 441
+ 442
+ 443
+ 444
+ 445
+ 446
+ 447
+ 448
+ 449
+ 450
+ 451
+ 452
+ 453
+ 454
+ 455
+ 456
+ 457
+ 458
+ 459
+ 460
+ 461
+ 462
+ 463
+ 464
+ 465
+ 466
+ 467
+ 468
+ 469
+ 470
+ 471
+ 472
+ 473
+ 474
+ 475
+ 476
+ 477
+ 478
+ 479
+ 480
+ 481
+ 482
+ 483
+ 484
+ 485
+ 486
+ 487
+ 488
+ 489
+ 490
+ 491
+ 492
+ 493
+ 494
+ 495
+ 496
+ 497
+ 498
+ 499
+ 500
+ 501
+ 502
+ 503
+ 504
+ 505
+ 506
+ 507
+ 508
+ 509
+ 510
+ 511
+ 512
+ 513
+ 514
+ 515
+ 516
+ 517
+ 518
+ 519
+ 520
+ 521
+ 522
+ 523
+ 524
+ 525
+ 526
+ 527
+ 528
+ 529
+ 530
+ 531
+ 532
+ 533
+ 534
+ 535
+ 536
+ 537
+ 538
+ 539
+ 540
+ 541
+ 542
+ 543
+ 544
+ 545
+ 546
+ 547
+ 548
+ 549
+ 550
+ 551
+ 552
+ 553
+ 554
+ 555
+ 556
+ 557
+ 558
+ 559
+ 560
+ 561
+ 562
+ 563
+ 564
+ 565
+ 566
+ 567
+ 568
+ 569
+ 570
+ 571
+ 572
+ 573
+ 574
+ 575
+ 576
+ 577
+ 578
+ 579
+ 580
+ 581
+ 582
+ 583
+ 584
+ 585
+ 586
+ 587
+ 588
+ 589
+ 590
+ 591
+ 592
+ 593
+ 594
+ 595
+ 596
+ 597
+ 598
+ 599
+ 600
+ 601
+ 602
+ 603
+ 604
+ 605
+ 606
+ 607
+ 608
+ 609
+ 610
+ 611
+ 612
+ 613
+ 614
+ 615
+ 616
+ 617
+ 618
+ 619
+ 620
+ 621
+ 622
+ 623
+ 624
+ 625
+ 626
+ 627
+ 628
+ 629
+ 630
+ 631
+ 632
+ 633
+ 634
+ 635
+ 636
+ 637
+ 638
+ 639
+ 640
+ 641
+ 642
+ 643
+ 644
+ 645
+ 646
+ 647
+ 648
+ 649
+ 650
+ 651
+ 652
+ 653
+ 654
+ 655
+ 656
+ 657
+ 658
+ 659
+ 660
+ 661
+ 662
+ 663
+ 664
+ 665
+ 666
+ 667
+ 668
+ 669
+ 670
+ 671
+ 672
+ 673
+ 674
+ 675
+ 676
+ 677
+ 678
+ 679
+ 680
+ 681
+ 682
+ 683
+ 684
+ 685
+ 686
+ 687
+ 688
+ 689
+ 690
+ 691
+ 692
+ 693
+ 694
+ 695
+ 696
+ 697
+ 698
+ 699
+ 700
+ 701
+ 702
+ 703
+ 704
+ 705
+ 706
+ 707
+ 708
+ 709
+ 710
+ 711
+ 712
+ 713
+ 714
+ 715
+ 716
+ 717
+ 718
+ 719
+ 720
+ 721
+ 722
+ 723
+ 724
+ 725
+ 726
+ 727
+ 728
+ 729
+ 730
+ 731
+ 732
+ 733
+ 734
+ 735
+ 736
+ 737
+ 738
+ 739
+ 740
+ 741
+ 742
+ 743
+ 744
+ 745
+ 746
+ 747
+ 748
+ 749
+ 750
+ 751
+ 752
+ 753
+ 754
+ 755
+ 756
+ 757
+ 758
+ 759
+ 760
+ 761
+ 762
+ 763
+ 764
+ 765
+ 766
+ 767
+ 768
+ 769
+ 770
+ 771
+ 772
+ 773
+ 774
+ 775
+ 776
+ 777
+ 778
+ 779
+ 780
+ 781
+ 782
+ 783
+ 784
+ 785
+ 786
+ 787
+ 788
+ 789
+ 790
+ 791
+ 792
+ 793
+ 794
+ 795
+ 796
+ 797
+ 798
+ 799
+ 800
+ 801
+ 802
+ 803
+ 804
+ 805
+ 806
+ 807
+ 808
+ 809
+ 810
+ 811
+ 812
+ 813
+ 814
+ 815
+ 816
+ 817
+ 818
+ 819
+ 820
+ 821
+ 822
+ 823
+ 824
+ 825
+ 826
+ 827
+ 828
+ 829
+ 830
+ 831
+ 832
+ 833
+ 834
+ 835
+ 836
+ 837
+ 838
+ 839
+ 840
+ 841
+ 842
+ 843
+ 844
+ 845
+ 846
+ 847
+ 848
+ 849
+ 850
+ 851
+ 852
+ 853
+ 854
+ 855
+ 856
+ 857
+ 858
+ 859
+ 860
+ 861
+ 862
+ 863
+ 864
+ 865
+ 866
+ 867
+ 868
+ 869
+ 870
+ 871
+ 872
+ 873
+ 874
+ 875
+ 876
+ 877
+ 878
+ 879
+ 880
+ 881
+ 882
+ 883
+ 884
+ 885
+ 886
+ 887
+ 888
+ 889
+ 890
+ 891
+ 892
+ 893
+ 894
+ 895
+ 896
+ 897
+ 898
+ 899
+ 900
+ 901
+ 902
+ 903
+ 904
+ 905
+ 906
+ 907
+ 908
+ 909
+ 910
+ 911
+ 912
+ 913
+ 914
+ 915
+ 916
+ 917
+ 918
+ 919
+ 920
+ 921
+ 922
+ 923
+ 924
+ 925
+ 926
+ 927
+ 928
+ 929
+ 930
+ 931
+ 932
+ 933
+ 934
+ 935
+ 936
+ 937
+ 938
+ 939
+ 940
+ 941
+ 942
+ 943
+ 944
+ 945
+ 946
+ 947
+ 948
+ 949
+ 950
+ 951
+ 952
+ 953
+ 954
+ 955
+ 956
+ 957
+ 958
+ 959
+ 960
+ 961
+ 962
+ 963
+ 964
+ 965
+ 966
+ 967
+ 968
+ 969
+ 970
+ 971
+ 972
+ 973
+ 974
+ 975
+ 976
+ 977
+ 978
+ 979
+ 980
+ 981
+ 982
+ 983
+ 984
+ 985
+ 986
+ 987
+ 988
+ 989
+ 990
+ 991
+ 992
+ 993
+ 994
+ 995
+ 996
+ 997
+ 998
+ 999
+1000
+1001
+1002
+1003
+1004
+1005
+1006
+1007
+1008
+1009
+1010
+1011
+1012
+1013
+1014
+1015
+1016
+1017
+1018
+1019
+1020
+1021
+1022
+1023
+1024
+1025
+1026
+1027
+1028
+1029
+1030
+1031
+1032
+1033
+1034
+1035
+1036
+1037
+1038
+1039
+1040
+1041
+1042
+1043
+1044
+1045
+1046
+1047
+1048
+1049
+1050
+1051
+1052
+1053
+1054
+1055
+1056
+1057
+1058
+1059
+1060
+1061
+1062
+1063
+1064
+1065
+1066
+1067
+1068
+1069
+1070
+1071
+1072
+1073
+1074
+1075
+1076
+1077
+1078
+1079
+1080
+1081
+1082
+1083
+1084
+1085
+1086
+1087
+1088
+1089
+1090
+1091
+1092
+1093
+1094
+1095
+1096
+1097
+1098
+1099</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
-<a name="line-6"></a><span class="cm"> * Date : 2009-12-11</span>
-<a name="line-7"></a><span class="cm"> * Description : test cases for the various album models</span>
+<a name="line-6"></a><span class="cm"> * Date : 2010-03-21</span>
+<a name="line-7"></a><span class="cm"> * Description : A container to hold GPS information about an item.</span>
<a name="line-8"></a><span class="cm"> *</span>
-<a name="line-9"></a><span class="cm"> * Copyright (C) 2009 by Johannes Wienke &lt;languitar at semipol dot de&gt;</span>
-<a name="line-10"></a><span class="cm"> *</span>
-<a name="line-11"></a><span class="cm"> * This program is free software; you can redistribute it</span>
-<a name="line-12"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
-<a name="line-13"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
-<a name="line-14"></a><span class="cm"> * either version 2, or (at your option)</span>
-<a name="line-15"></a><span class="cm"> * any later version.</span>
-<a name="line-16"></a><span class="cm"> *</span>
-<a name="line-17"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
-<a name="line-18"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
-<a name="line-19"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
-<a name="line-20"></a><span class="cm"> * GNU General Public License for more details.</span>
-<a name="line-21"></a><span class="cm"> *</span>
-<a name="line-22"></a><span class="cm"> * ============================================================ */</span>
-<a name="line-23"></a>
-<a name="line-24"></a><span class="cp">#include</span> <span class="cpf">&quot;albummodeltest.h&quot;</span><span class="cp"></span>
-<a name="line-25"></a>
-<a name="line-26"></a><span class="c1">// Qt includes</span>
-<a name="line-27"></a>
-<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;QDir&gt;</span><span class="cp"></span>
-<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QTest&gt;</span><span class="cp"></span>
-<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QDebug&gt;</span><span class="cp"></span>
-<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QUrl&gt;</span><span class="cp"></span>
-<a name="line-32"></a>
-<a name="line-33"></a><span class="c1">// Local includes</span>
-<a name="line-34"></a>
-<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&quot;albumfiltermodel.h&quot;</span><span class="cp"></span>
-<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&quot;albummanager.h&quot;</span><span class="cp"></span>
-<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&quot;albummodel.h&quot;</span><span class="cp"></span>
-<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&quot;applicationsettings.h&quot;</span><span class="cp"></span>
-<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&quot;albumthumbnailloader.h&quot;</span><span class="cp"></span>
-<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&quot;collectionlocation.h&quot;</span><span class="cp"></span>
-<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&quot;collectionmanager.h&quot;</span><span class="cp"></span>
-<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&quot;loadingcacheinterface.h&quot;</span><span class="cp"></span>
-<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&quot;scancontroller.h&quot;</span><span class="cp"></span>
-<a name="line-44"></a><span class="cp">#include</span> <span class="cpf">&quot;thumbnailloadthread.h&quot;</span><span class="cp"></span>
-<a name="line-45"></a><span class="cp">#include</span> <span class="cpf">&quot;modeltest.h&quot;</span><span class="cp"></span>
-<a name="line-46"></a>
-<a name="line-47"></a><span class="k">using</span> <span class="k">namespace</span> <span class="n">Digikam</span><span class="p">;</span>
-<a name="line-48"></a>
-<a name="line-49"></a><span class="k">const</span> <span class="n">QString</span> <span class="nf">IMAGE_PATH</span><span class="p">(</span><span class="n">QFINDTESTDATA</span><span class="p">(</span><span class="s">&quot;data/&quot;</span><span class="p">));</span>
-<a name="line-50"></a>
-<a name="line-51"></a><span class="n">QTEST_MAIN</span><span class="p">(</span><span class="n">AlbumModelTest</span><span class="p">)</span>
+<a name="line-9"></a><span class="cm"> * Copyright (C) 2010-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&gt;</span>
+<a name="line-10"></a><span class="cm"> * Copyright (C) 2010-2014 by Michael G. Hansen &lt;mike at mghansen dot de&gt;</span>
+<a name="line-11"></a><span class="cm"> *</span>
+<a name="line-12"></a><span class="cm"> * This program is free software; you can redistribute it</span>
+<a name="line-13"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
+<a name="line-14"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
+<a name="line-15"></a><span class="cm"> * either version 2, or (at your option)</span>
+<a name="line-16"></a><span class="cm"> * any later version.</span>
+<a name="line-17"></a><span class="cm"> *</span>
+<a name="line-18"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
+<a name="line-19"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
+<a name="line-20"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
+<a name="line-21"></a><span class="cm"> * GNU General Public License for more details.</span>
+<a name="line-22"></a><span class="cm"> *</span>
+<a name="line-23"></a><span class="cm"> * ============================================================ */</span>
+<a name="line-24"></a>
+<a name="line-25"></a><span class="cp">#include</span> <span class="cpf">&quot;gpsitemcontainer.h&quot;</span><span class="cp"></span>
+<a name="line-26"></a>
+<a name="line-27"></a><span class="c1">// Qt includes</span>
+<a name="line-28"></a>
+<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QBrush&gt;</span><span class="cp"></span>
+<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QFileInfo&gt;</span><span class="cp"></span>
+<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QScopedPointer&gt;</span><span class="cp"></span>
+<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QLocale&gt;</span><span class="cp"></span>
+<a name="line-33"></a>
+<a name="line-34"></a><span class="c1">// KDE includes</span>
+<a name="line-35"></a>
+<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
+<a name="line-37"></a>
+<a name="line-38"></a><span class="c1">// Local includes</span>
+<a name="line-39"></a>
+<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
+<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&quot;gpsitemmodel.h&quot;</span><span class="cp"></span>
+<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&quot;dmetadata.h&quot;</span><span class="cp"></span>
+<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&quot;metaenginesettings.h&quot;</span><span class="cp"></span>
+<a name="line-44"></a>
+<a name="line-45"></a><span class="k">namespace</span> <span class="n">Digikam</span>
+<a name="line-46"></a><span class="p">{</span>
+<a name="line-47"></a>
+<a name="line-48"></a><span class="kt">bool</span> <span class="n">setExifXmpTagDataVariant</span><span class="p">(</span><span class="n">DMetadata</span><span class="o">*</span> <span class="k">const</span> <span class="n">meta</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span><span class="o">*</span> <span class="k">const</span> <span class="n">exifTagName</span><span class="p">,</span>
+<a name="line-49"></a> <span class="k">const</span> <span class="kt">char</span><span class="o">*</span> <span class="k">const</span> <span class="n">xmpTagName</span><span class="p">,</span> <span class="k">const</span> <span class="n">QVariant</span><span class="o">&amp;</span> <span class="n">value</span><span class="p">)</span>
+<a name="line-50"></a><span class="p">{</span>
+<a name="line-51"></a> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">setExifTagVariant</span><span class="p">(</span><span class="n">exifTagName</span><span class="p">,</span> <span class="n">value</span><span class="p">);</span>
<a name="line-52"></a>
-<a name="line-53"></a><span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">AlbumModelTest</span><span class="p">()</span>
-<a name="line-54"></a> <span class="o">:</span> <span class="n">albumCategory</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;DummyCategory&quot;</span><span class="p">)),</span>
-<a name="line-55"></a> <span class="n">palbumRoot0</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-56"></a> <span class="n">palbumRoot1</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-57"></a> <span class="n">palbumRoot2</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-58"></a> <span class="n">palbumChild0Root0</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-59"></a> <span class="n">palbumChild1Root0</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-60"></a> <span class="n">palbumChild2Root0</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-61"></a> <span class="n">palbumChild0Root1</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-62"></a> <span class="n">rootTag</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-63"></a> <span class="n">talbumRoot0</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-64"></a> <span class="n">talbumRoot1</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-65"></a> <span class="n">talbumChild0Root0</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-66"></a> <span class="n">talbumChild1Root0</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-67"></a> <span class="n">talbumChild0Child1Root0</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-68"></a> <span class="n">talbumChild0Root1</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-69"></a> <span class="n">startModel</span><span class="p">(</span><span class="k">nullptr</span><span class="p">)</span>
-<a name="line-70"></a><span class="p">{</span>
-<a name="line-71"></a><span class="p">}</span>
-<a name="line-72"></a>
-<a name="line-73"></a><span class="n">AlbumModelTest</span><span class="o">::~</span><span class="n">AlbumModelTest</span><span class="p">()</span>
-<a name="line-74"></a><span class="p">{</span>
-<a name="line-75"></a><span class="p">}</span>
-<a name="line-76"></a>
-<a name="line-77"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">initTestCase</span><span class="p">()</span>
-<a name="line-78"></a><span class="p">{</span>
-<a name="line-79"></a> <span class="n">tempSuffix</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;albummodeltest-&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QTime</span><span class="o">::</span><span class="n">currentTime</span><span class="p">().</span><span class="n">toString</span><span class="p">();</span>
-<a name="line-80"></a> <span class="n">dbPath</span> <span class="o">=</span> <span class="n">QDir</span><span class="o">::</span><span class="n">temp</span><span class="p">().</span><span class="n">absolutePath</span><span class="p">()</span> <span class="o">+</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">tempSuffix</span><span class="p">;</span>
+<a name="line-53"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span><span class="p">)</span>
+<a name="line-54"></a> <span class="p">{</span>
+<a name="line-55"></a> <span class="cm">/**</span>
+<a name="line-56"></a><span class="cm"> * @todo Here we save all data types as XMP Strings. Is that okay or do we have to store them as some other type?</span>
+<a name="line-57"></a><span class="cm"> */</span>
+<a name="line-58"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">value</span><span class="p">.</span><span class="n">type</span><span class="p">())</span>
+<a name="line-59"></a> <span class="p">{</span>
+<a name="line-60"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">Int</span><span class="p">:</span>
+<a name="line-61"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">UInt</span><span class="p">:</span>
+<a name="line-62"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">Bool</span><span class="p">:</span>
+<a name="line-63"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">LongLong</span><span class="p">:</span>
+<a name="line-64"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">ULongLong</span><span class="p">:</span>
+<a name="line-65"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">setXmpTagString</span><span class="p">(</span><span class="n">xmpTagName</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">value</span><span class="p">.</span><span class="n">toInt</span><span class="p">()));</span>
+<a name="line-66"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-67"></a>
+<a name="line-68"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">Double</span><span class="p">:</span>
+<a name="line-69"></a> <span class="p">{</span>
+<a name="line-70"></a> <span class="kt">long</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">;</span>
+<a name="line-71"></a> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">convertToRationalSmallDenominator</span><span class="p">(</span><span class="n">value</span><span class="p">.</span><span class="n">toDouble</span><span class="p">(),</span> <span class="o">&amp;</span><span class="n">num</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">den</span><span class="p">);</span>
+<a name="line-72"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">setXmpTagString</span><span class="p">(</span><span class="n">xmpTagName</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;%1/%2&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">num</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">den</span><span class="p">));</span>
+<a name="line-73"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-74"></a> <span class="p">}</span>
+<a name="line-75"></a>
+<a name="line-76"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">List</span><span class="p">:</span>
+<a name="line-77"></a> <span class="p">{</span>
+<a name="line-78"></a> <span class="kt">long</span> <span class="n">num</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-79"></a> <span class="kt">long</span> <span class="n">den</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+<a name="line-80"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QVariant</span><span class="o">&gt;</span> <span class="n">list</span> <span class="o">=</span> <span class="n">value</span><span class="p">.</span><span class="n">toList</span><span class="p">();</span>
<a name="line-81"></a>
-<a name="line-82"></a> <span class="k">if</span> <span class="p">(</span><span class="n">QDir</span><span class="o">::</span><span class="n">temp</span><span class="p">().</span><span class="n">exists</span><span class="p">(</span><span class="n">tempSuffix</span><span class="p">))</span>
-<a name="line-83"></a> <span class="p">{</span>
-<a name="line-84"></a> <span class="n">QString</span> <span class="n">msg</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Error creating temp path&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">dbPath</span><span class="p">;</span>
-<a name="line-85"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="nb">false</span><span class="p">,</span> <span class="n">msg</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-86"></a> <span class="p">}</span>
-<a name="line-87"></a>
-<a name="line-88"></a> <span class="n">QDir</span><span class="o">::</span><span class="n">temp</span><span class="p">().</span><span class="n">mkdir</span><span class="p">(</span><span class="n">tempSuffix</span><span class="p">);</span>
-<a name="line-89"></a>
-<a name="line-90"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Using database path for test: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">dbPath</span><span class="p">;</span>
+<a name="line-82"></a> <span class="k">if</span> <span class="p">(</span><span class="n">list</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">&gt;=</span> <span class="mi">1</span><span class="p">)</span>
+<a name="line-83"></a> <span class="p">{</span>
+<a name="line-84"></a> <span class="n">num</span> <span class="o">=</span> <span class="n">list</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">toInt</span><span class="p">();</span>
+<a name="line-85"></a> <span class="p">}</span>
+<a name="line-86"></a>
+<a name="line-87"></a> <span class="k">if</span> <span class="p">(</span><span class="n">list</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">&gt;=</span> <span class="mi">2</span><span class="p">)</span>
+<a name="line-88"></a> <span class="p">{</span>
+<a name="line-89"></a> <span class="n">den</span> <span class="o">=</span> <span class="n">list</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">toInt</span><span class="p">();</span>
+<a name="line-90"></a> <span class="p">}</span>
<a name="line-91"></a>
-<a name="line-92"></a> <span class="n">ApplicationSettings</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">setShowFolderTreeViewItemsCount</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-93"></a>
-<a name="line-94"></a> <span class="c1">// use a testing database</span>
+<a name="line-92"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">setXmpTagString</span><span class="p">(</span><span class="n">xmpTagName</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;%1/%2&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">num</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">den</span><span class="p">));</span>
+<a name="line-93"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-94"></a> <span class="p">}</span>
<a name="line-95"></a>
-<a name="line-96"></a> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">();</span>
-<a name="line-97"></a>
-<a name="line-98"></a> <span class="c1">// catch palbum counts for waiting</span>
-<a name="line-99"></a>
-<a name="line-100"></a> <span class="n">connect</span><span class="p">(</span><span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">(),</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalPAlbumsDirty</span><span class="p">(</span><span class="n">QMap</span><span class="o">&lt;</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="o">&gt;</span><span class="p">)),</span>
-<a name="line-101"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setLastPAlbumCountMap</span><span class="p">(</span><span class="n">QMap</span><span class="o">&lt;</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="o">&gt;</span><span class="p">)));</span>
-<a name="line-102"></a>
-<a name="line-103"></a> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">checkDatabaseDirsAfterFirstRun</span><span class="p">(</span><span class="n">QDir</span><span class="o">::</span><span class="n">temp</span><span class="p">().</span><span class="n">absoluteFilePath</span><span class="p">(</span>
-<a name="line-104"></a> <span class="n">tempSuffix</span><span class="p">),</span> <span class="n">QDir</span><span class="o">::</span><span class="n">temp</span><span class="p">().</span><span class="n">absoluteFilePath</span><span class="p">(</span><span class="n">tempSuffix</span><span class="p">));</span>
-<a name="line-105"></a> <span class="n">DbEngineParameters</span> <span class="nf">params</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;QSQLITE&quot;</span><span class="p">),</span> <span class="n">QDir</span><span class="o">::</span><span class="n">temp</span><span class="p">().</span><span class="n">absoluteFilePath</span><span class="p">(</span><span class="n">tempSuffix</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/digikam4.db&quot;</span><span class="p">)),</span>
-<a name="line-106"></a> <span class="n">QString</span><span class="p">(),</span> <span class="n">QString</span><span class="p">(),</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span> <span class="n">QString</span><span class="p">(),</span> <span class="n">QString</span><span class="p">());</span>
-<a name="line-107"></a> <span class="kt">bool</span> <span class="n">dbChangeGood</span> <span class="o">=</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">setDatabase</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="nb">false</span><span class="p">,</span>
-<a name="line-108"></a> <span class="n">QDir</span><span class="o">::</span><span class="n">temp</span><span class="p">().</span><span class="n">absoluteFilePath</span><span class="p">(</span><span class="n">tempSuffix</span><span class="p">));</span>
-<a name="line-109"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="n">dbChangeGood</span><span class="p">,</span> <span class="s">&quot;Could not set temp album db&quot;</span><span class="p">);</span>
-<a name="line-110"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">CollectionLocation</span><span class="o">&gt;</span> <span class="n">locs</span> <span class="o">=</span> <span class="n">CollectionManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allAvailableLocations</span><span class="p">();</span>
-<a name="line-111"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="n">locs</span><span class="p">.</span><span class="n">size</span><span class="p">(),</span> <span class="s">&quot;Failed to auto-create one collection in setDatabase&quot;</span><span class="p">);</span>
-<a name="line-112"></a>
-<a name="line-113"></a> <span class="n">ScanController</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">completeCollectionScan</span><span class="p">();</span>
-<a name="line-114"></a> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">startScan</span><span class="p">();</span>
+<a name="line-96"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">Date</span><span class="p">:</span>
+<a name="line-97"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">DateTime</span><span class="p">:</span>
+<a name="line-98"></a> <span class="p">{</span>
+<a name="line-99"></a> <span class="n">QDateTime</span> <span class="n">dateTime</span> <span class="o">=</span> <span class="n">value</span><span class="p">.</span><span class="n">toDateTime</span><span class="p">();</span>
+<a name="line-100"></a>
+<a name="line-101"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">dateTime</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
+<a name="line-102"></a> <span class="p">{</span>
+<a name="line-103"></a> <span class="n">success</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-104"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-105"></a> <span class="p">}</span>
+<a name="line-106"></a>
+<a name="line-107"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">setXmpTagString</span><span class="p">(</span><span class="n">xmpTagName</span><span class="p">,</span> <span class="n">dateTime</span><span class="p">.</span><span class="n">toString</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yyyy:MM:dd hh:mm:ss&quot;</span><span class="p">)));</span>
+<a name="line-108"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-109"></a> <span class="p">}</span>
+<a name="line-110"></a>
+<a name="line-111"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">String</span><span class="p">:</span>
+<a name="line-112"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">Char</span><span class="p">:</span>
+<a name="line-113"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">setXmpTagString</span><span class="p">(</span><span class="n">xmpTagName</span><span class="p">,</span> <span class="n">value</span><span class="p">.</span><span class="n">toString</span><span class="p">());</span>
+<a name="line-114"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-115"></a>
-<a name="line-116"></a> <span class="n">AlbumList</span> <span class="n">all</span> <span class="o">=</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allPAlbums</span><span class="p">();</span>
-<a name="line-117"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;PAlbum registered : &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">all</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
-<a name="line-118"></a>
-<a name="line-119"></a> <span class="n">foreach</span> <span class="p">(</span><span class="n">Album</span><span class="o">*</span> <span class="k">const</span> <span class="n">a</span><span class="p">,</span> <span class="n">all</span><span class="p">)</span>
-<a name="line-120"></a> <span class="p">{</span>
-<a name="line-121"></a> <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">)</span>
-<a name="line-122"></a> <span class="p">{</span>
-<a name="line-123"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; ==&gt; Id : &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">a</span><span class="o">-&gt;</span><span class="n">id</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; , is root : &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">a</span><span class="o">-&gt;</span><span class="n">isRoot</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; , title : &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">a</span><span class="o">-&gt;</span><span class="n">title</span><span class="p">();</span>
-<a name="line-124"></a> <span class="p">}</span>
-<a name="line-125"></a> <span class="p">}</span>
-<a name="line-126"></a>
-<a name="line-127"></a> <span class="n">QVERIFY2</span><span class="p">(</span> <span class="n">all</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">==</span> <span class="mi">3</span><span class="p">,</span> <span class="s">&quot;Failed to scan empty directory. We must have one root album, one album, and one trash.&quot;</span><span class="p">);</span>
-<a name="line-128"></a><span class="p">}</span>
-<a name="line-129"></a>
-<a name="line-130"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">cleanupTestCase</span><span class="p">()</span>
-<a name="line-131"></a><span class="p">{</span>
-<a name="line-132"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start AlbumModelTest::cleanupTestCase()&quot;</span><span class="p">;</span>
-<a name="line-133"></a>
-<a name="line-134"></a> <span class="n">ScanController</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">shutDown</span><span class="p">();</span>
-<a name="line-135"></a> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">cleanUp</span><span class="p">();</span>
-<a name="line-136"></a> <span class="n">ThumbnailLoadThread</span><span class="o">::</span><span class="n">cleanUp</span><span class="p">();</span>
-<a name="line-137"></a> <span class="n">AlbumThumbnailLoader</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">cleanUp</span><span class="p">();</span>
-<a name="line-138"></a> <span class="n">LoadingCacheInterface</span><span class="o">::</span><span class="n">cleanUp</span><span class="p">();</span>
-<a name="line-139"></a>
-<a name="line-140"></a> <span class="n">QDir</span> <span class="nf">dir</span><span class="p">(</span><span class="n">dbPath</span><span class="p">);</span>
-<a name="line-141"></a> <span class="n">dir</span><span class="p">.</span><span class="n">removeRecursively</span><span class="p">();</span>
-<a name="line-142"></a>
-<a name="line-143"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;deleted test folder &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">dbPath</span><span class="p">;</span>
+<a name="line-116"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">ByteArray</span><span class="p">:</span>
+<a name="line-117"></a>
+<a name="line-118"></a> <span class="c1">/// @todo I don&#39;t know a straightforward way to convert a byte array to XMP</span>
+<a name="line-119"></a>
+<a name="line-120"></a> <span class="n">success</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-121"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-122"></a>
+<a name="line-123"></a> <span class="k">default</span><span class="o">:</span>
+<a name="line-124"></a> <span class="n">success</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-125"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-126"></a> <span class="p">}</span>
+<a name="line-127"></a> <span class="p">}</span>
+<a name="line-128"></a>
+<a name="line-129"></a> <span class="k">return</span> <span class="n">success</span><span class="p">;</span>
+<a name="line-130"></a><span class="p">}</span>
+<a name="line-131"></a>
+<a name="line-132"></a><span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">GPSItemContainer</span><span class="p">(</span><span class="k">const</span> <span class="n">QUrl</span><span class="o">&amp;</span> <span class="n">url</span><span class="p">)</span>
+<a name="line-133"></a> <span class="o">:</span> <span class="n">m_model</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-134"></a> <span class="n">m_url</span><span class="p">(</span><span class="n">url</span><span class="p">),</span>
+<a name="line-135"></a> <span class="n">m_dateTime</span><span class="p">(),</span>
+<a name="line-136"></a> <span class="n">m_dirty</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
+<a name="line-137"></a> <span class="n">m_gpsData</span><span class="p">(),</span>
+<a name="line-138"></a> <span class="n">m_savedState</span><span class="p">(),</span>
+<a name="line-139"></a> <span class="n">m_tagListDirty</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
+<a name="line-140"></a> <span class="n">m_tagList</span><span class="p">(),</span>
+<a name="line-141"></a> <span class="n">m_savedTagList</span><span class="p">(),</span>
+<a name="line-142"></a> <span class="n">m_writeXmpTags</span><span class="p">(</span><span class="nb">true</span><span class="p">)</span>
+<a name="line-143"></a><span class="p">{</span>
<a name="line-144"></a><span class="p">}</span>
<a name="line-145"></a>
-<a name="line-146"></a><span class="c1">// Qt test doesn&#39;t use exceptions, so using assertion macros in methods called</span>
-<a name="line-147"></a><span class="c1">// from a test slot doesn&#39;t stop the test method and may result in inconsistent</span>
-<a name="line-148"></a><span class="c1">// data or segfaults. Therefore use macros for these functions.</span>
+<a name="line-146"></a><span class="n">GPSItemContainer</span><span class="o">::~</span><span class="n">GPSItemContainer</span><span class="p">()</span>
+<a name="line-147"></a><span class="p">{</span>
+<a name="line-148"></a><span class="p">}</span>
<a name="line-149"></a>
-<a name="line-150"></a><span class="cp">#define safeCreatePAlbum(parent, name, result) \</span>
-<a name="line-151"></a><span class="cp">{ \</span>
-<a name="line-152"></a><span class="cp"> QString error; \</span>
-<a name="line-153"></a><span class="cp"> result = AlbumManager::instance()-&gt;createPAlbum(parent, name, name, \</span>
-<a name="line-154"></a><span class="cp"> QDate::currentDate(), albumCategory, error); \</span>
-<a name="line-155"></a><span class="cp"> QVERIFY2(result, QString::fromUtf8(&quot;Error creating PAlbum for test: %1&quot;).arg(error).toLatin1().constData()); \</span>
-<a name="line-156"></a><span class="cp">}</span>
-<a name="line-157"></a>
-<a name="line-158"></a><span class="cp">#define safeCreateTAlbum(parent, name, result) \</span>
-<a name="line-159"></a><span class="cp">{ \</span>
-<a name="line-160"></a><span class="cp"> QString error; \</span>
-<a name="line-161"></a><span class="cp"> result = AlbumManager::instance()-&gt;createTAlbum(parent, name, QLatin1String(&quot;&quot;), error); \</span>
-<a name="line-162"></a><span class="cp"> QVERIFY2(result, QString::fromUtf8(&quot;Error creating TAlbum for test: %1&quot;).arg(error).toLatin1().constData()); \</span>
-<a name="line-163"></a><span class="cp">}</span>
+<a name="line-150"></a><span class="n">DMetadata</span><span class="o">*</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">getMetadataForFile</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-151"></a><span class="p">{</span>
+<a name="line-152"></a> <span class="n">QScopedPointer</span><span class="o">&lt;</span><span class="n">DMetadata</span><span class="o">&gt;</span> <span class="n">meta</span><span class="p">(</span><span class="k">new</span> <span class="n">DMetadata</span><span class="p">);</span>
+<a name="line-153"></a>
+<a name="line-154"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">meta</span><span class="o">-&gt;</span><span class="n">load</span><span class="p">(</span><span class="n">m_url</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">()))</span>
+<a name="line-155"></a> <span class="p">{</span>
+<a name="line-156"></a> <span class="c1">// It is possible that no sidecar file has yet been created.</span>
+<a name="line-157"></a> <span class="c1">// If writing to sidecar file is activated, we ignore the loading error of the metadata.</span>
+<a name="line-158"></a>
+<a name="line-159"></a> <span class="k">if</span> <span class="p">(</span><span class="n">MetaEngineSettings</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">settings</span><span class="p">().</span><span class="n">metadataWritingMode</span> <span class="o">==</span> <span class="n">DMetadata</span><span class="o">::</span><span class="n">WRITE_TO_FILE_ONLY</span><span class="p">)</span>
+<a name="line-160"></a> <span class="p">{</span>
+<a name="line-161"></a> <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-162"></a> <span class="p">}</span>
+<a name="line-163"></a> <span class="p">}</span>
<a name="line-164"></a>
-<a name="line-165"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">init</span><span class="p">()</span>
-<a name="line-166"></a><span class="p">{</span>
-<a name="line-167"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start AlbumModelTest::init()&quot;</span><span class="p">;</span>
-<a name="line-168"></a>
-<a name="line-169"></a> <span class="n">palbumCountMap</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
-<a name="line-170"></a>
-<a name="line-171"></a> <span class="c1">// create a model to check that model work is done correctly while scanning</span>
-<a name="line-172"></a>
-<a name="line-173"></a> <span class="n">addedIds</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
-<a name="line-174"></a> <span class="n">startModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AlbumModel</span><span class="p">;</span>
-<a name="line-175"></a> <span class="n">startModel</span><span class="o">-&gt;</span><span class="n">setShowCount</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-176"></a>
-<a name="line-177"></a> <span class="n">connect</span><span class="p">(</span><span class="n">startModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">rowsInserted</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
-<a name="line-178"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotStartModelRowsInserted</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)));</span>
-<a name="line-179"></a>
-<a name="line-180"></a> <span class="n">connect</span><span class="p">(</span><span class="n">startModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">dataChanged</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="n">QModelIndex</span><span class="p">)),</span>
-<a name="line-181"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotStartModelDataChanged</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="n">QModelIndex</span><span class="p">)));</span>
-<a name="line-182"></a>
-<a name="line-183"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Created startModel&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">startModel</span><span class="p">;</span>
-<a name="line-184"></a>
-<a name="line-185"></a> <span class="c1">// ensure that this model is empty in the beginning except for the root</span>
-<a name="line-186"></a> <span class="c1">// album and the collection that include trash</span>
-<a name="line-187"></a>
-<a name="line-188"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">startModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(),</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-189"></a> <span class="n">QModelIndex</span> <span class="n">rootIndex</span> <span class="o">=</span> <span class="n">startModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-190"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">startModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">rootIndex</span><span class="p">),</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-191"></a> <span class="n">QModelIndex</span> <span class="n">collectionIndex</span> <span class="o">=</span> <span class="n">startModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">rootIndex</span><span class="p">);</span>
-<a name="line-192"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">startModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">collectionIndex</span><span class="p">),</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-193"></a>
-<a name="line-194"></a> <span class="c1">// insert some test data</span>
-<a name="line-195"></a>
-<a name="line-196"></a> <span class="c1">// physical albums</span>
-<a name="line-197"></a>
-<a name="line-198"></a> <span class="c1">// create two of them by creating directories and scanning</span>
-<a name="line-199"></a>
-<a name="line-200"></a> <span class="n">QDir</span> <span class="nf">dir</span><span class="p">(</span><span class="n">dbPath</span><span class="p">);</span>
-<a name="line-201"></a> <span class="n">dir</span><span class="p">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;root0&quot;</span><span class="p">));</span>
-<a name="line-202"></a> <span class="n">dir</span><span class="p">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;root1&quot;</span><span class="p">));</span>
-<a name="line-203"></a>
-<a name="line-204"></a> <span class="n">ScanController</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">completeCollectionScan</span><span class="p">();</span>
-<a name="line-205"></a> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">refresh</span><span class="p">();</span>
-<a name="line-206"></a>
-<a name="line-207"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allPAlbums</span><span class="p">().</span><span class="n">size</span><span class="p">(),</span> <span class="mi">5</span><span class="p">);</span>
-<a name="line-208"></a>
-<a name="line-209"></a><span class="hll"> <span class="n">QString</span> <span class="n">error</span><span class="p">;</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span>
-</span><a name="line-210"></a> <span class="n">palbumRoot0</span> <span class="o">=</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">findPAlbum</span><span class="p">(</span><span class="n">QUrl</span><span class="o">::</span><span class="n">fromLocalFile</span><span class="p">(</span><span class="n">dbPath</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/root0&quot;</span><span class="p">)));</span>
-<a name="line-211"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="n">palbumRoot0</span><span class="p">,</span> <span class="s">&quot;Error having PAlbum root0 in AlbumManager&quot;</span><span class="p">);</span>
-<a name="line-212"></a> <span class="n">palbumRoot1</span> <span class="o">=</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">findPAlbum</span><span class="p">(</span><span class="n">QUrl</span><span class="o">::</span><span class="n">fromLocalFile</span><span class="p">(</span><span class="n">dbPath</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/root1&quot;</span><span class="p">)));</span>
-<a name="line-213"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="n">palbumRoot1</span><span class="p">,</span> <span class="s">&quot;Error having PAlbum root1 in AlbumManager&quot;</span><span class="p">);</span>
+<a name="line-165"></a> <span class="k">return</span> <span class="n">meta</span><span class="p">.</span><span class="n">take</span><span class="p">();</span>
+<a name="line-166"></a><span class="p">}</span>
+<a name="line-167"></a>
+<a name="line-168"></a><span class="kt">int</span> <span class="n">getWarningLevelFromGPSDataContainer</span><span class="p">(</span><span class="k">const</span> <span class="n">GPSDataContainer</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
+<a name="line-169"></a><span class="p">{</span>
+<a name="line-170"></a> <span class="k">if</span> <span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">hasDop</span><span class="p">())</span>
+<a name="line-171"></a> <span class="p">{</span>
+<a name="line-172"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">dopValue</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">getDop</span><span class="p">();</span>
+<a name="line-173"></a>
+<a name="line-174"></a> <span class="k">if</span> <span class="p">(</span><span class="n">dopValue</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span>
+<a name="line-175"></a> <span class="p">{</span>
+<a name="line-176"></a> <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<a name="line-177"></a> <span class="p">}</span>
+<a name="line-178"></a>
+<a name="line-179"></a> <span class="k">if</span> <span class="p">(</span><span class="n">dopValue</span> <span class="o">&lt;</span> <span class="mi">4</span><span class="p">)</span>
+<a name="line-180"></a> <span class="p">{</span>
+<a name="line-181"></a> <span class="k">return</span> <span class="mi">2</span><span class="p">;</span>
+<a name="line-182"></a> <span class="p">}</span>
+<a name="line-183"></a>
+<a name="line-184"></a> <span class="k">if</span> <span class="p">(</span><span class="n">dopValue</span> <span class="o">&lt;</span> <span class="mi">10</span><span class="p">)</span>
+<a name="line-185"></a> <span class="p">{</span>
+<a name="line-186"></a> <span class="k">return</span> <span class="mi">3</span><span class="p">;</span>
+<a name="line-187"></a> <span class="p">}</span>
+<a name="line-188"></a>
+<a name="line-189"></a> <span class="k">return</span> <span class="mi">4</span><span class="p">;</span>
+<a name="line-190"></a> <span class="p">}</span>
+<a name="line-191"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">hasFixType</span><span class="p">())</span>
+<a name="line-192"></a> <span class="p">{</span>
+<a name="line-193"></a> <span class="k">if</span> <span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">getFixType</span><span class="p">()</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">)</span>
+<a name="line-194"></a> <span class="p">{</span>
+<a name="line-195"></a> <span class="k">return</span> <span class="mi">4</span><span class="p">;</span>
+<a name="line-196"></a> <span class="p">}</span>
+<a name="line-197"></a> <span class="p">}</span>
+<a name="line-198"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">())</span>
+<a name="line-199"></a> <span class="p">{</span>
+<a name="line-200"></a> <span class="k">if</span> <span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">getNSatellites</span><span class="p">()</span> <span class="o">&lt;</span> <span class="mi">4</span><span class="p">)</span>
+<a name="line-201"></a> <span class="p">{</span>
+<a name="line-202"></a> <span class="k">return</span> <span class="mi">4</span><span class="p">;</span>
+<a name="line-203"></a> <span class="p">}</span>
+<a name="line-204"></a> <span class="p">}</span>
+<a name="line-205"></a>
+<a name="line-206"></a> <span class="c1">// no warning level</span>
+<a name="line-207"></a>
+<a name="line-208"></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+<a name="line-209"></a><span class="p">}</span>
+<a name="line-210"></a>
+<a name="line-211"></a><span class="kt">bool</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">loadImageData</span><span class="p">()</span>
+<a name="line-212"></a><span class="p">{</span>
+<a name="line-213"></a> <span class="n">QScopedPointer</span><span class="o">&lt;</span><span class="n">DMetadata</span><span class="o">&gt;</span> <span class="n">meta</span><span class="p">(</span><span class="n">getMetadataForFile</span><span class="p">());</span>
<a name="line-214"></a>
-<a name="line-215"></a> <span class="c1">// Create some more through AlbumManager</span>
-<a name="line-216"></a>
-<a name="line-217"></a> <span class="n">palbumRoot2</span> <span class="o">=</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">createPAlbum</span><span class="p">(</span><span class="n">dbPath</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;root2&quot;</span><span class="p">),</span>
-<a name="line-218"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;root album 2&quot;</span><span class="p">),</span> <span class="n">QDate</span><span class="o">::</span><span class="n">currentDate</span><span class="p">(),</span> <span class="n">albumCategory</span><span class="p">,</span> <span class="n">error</span><span class="p">);</span>
-<a name="line-219"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="n">palbumRoot2</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;Error creating PAlbum for test: %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">error</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-220"></a>
-<a name="line-221"></a><span class="hll"> <span class="n">safeCreatePAlbum</span><span class="p">(</span><span class="n">palbumRoot0</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;root0child0&quot;</span><span class="p">),</span> <span class="n">palbumChild0Root0</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-222"></a><span class="hll"> <span class="n">safeCreatePAlbum</span><span class="p">(</span><span class="n">palbumRoot0</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;root0child1&quot;</span><span class="p">),</span> <span class="n">palbumChild1Root0</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-223"></a> <span class="k">const</span> <span class="n">QString</span> <span class="n">sameName</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;sameName Album&quot;</span><span class="p">);</span>
-<a name="line-224"></a><span class="hll"> <span class="n">safeCreatePAlbum</span><span class="p">(</span><span class="n">palbumRoot0</span><span class="p">,</span> <span class="n">sameName</span><span class="p">,</span> <span class="n">palbumChild2Root0</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-225"></a>
-<a name="line-226"></a><span class="hll"> <span class="n">safeCreatePAlbum</span><span class="p">(</span><span class="n">palbumRoot1</span><span class="p">,</span> <span class="n">sameName</span><span class="p">,</span> <span class="n">palbumChild0Root1</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-227"></a>
-<a name="line-228"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;AlbumManager now knows these PAlbums:&quot;</span><span class="p">;</span>
+<a name="line-215"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">m_dateTime</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
+<a name="line-216"></a> <span class="p">{</span>
+<a name="line-217"></a> <span class="n">m_dateTime</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">getItemDateTime</span><span class="p">();</span>
+<a name="line-218"></a> <span class="p">}</span>
+<a name="line-219"></a>
+<a name="line-220"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_dateTime</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
+<a name="line-221"></a> <span class="p">{</span>
+<a name="line-222"></a> <span class="c1">// Get date from filesystem.</span>
+<a name="line-223"></a>
+<a name="line-224"></a> <span class="n">QFileInfo</span> <span class="n">info</span><span class="p">(</span><span class="n">m_url</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">());</span>
+<a name="line-225"></a>
+<a name="line-226"></a><span class="cp">#if (QT_VERSION &gt;= QT_VERSION_CHECK(5, 10, 0))</span>
+<a name="line-227"></a>
+<a name="line-228"></a> <span class="n">QDateTime</span> <span class="n">ctime</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">birthTime</span><span class="p">();</span>
<a name="line-229"></a>
-<a name="line-230"></a> <span class="n">foreach</span> <span class="p">(</span><span class="n">Album</span><span class="o">*</span> <span class="k">const</span> <span class="n">a</span><span class="p">,</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allPAlbums</span><span class="p">())</span>
-<a name="line-231"></a> <span class="p">{</span>
-<a name="line-232"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;</span><span class="se">\t</span><span class="s">&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">a</span><span class="o">-&gt;</span><span class="n">title</span><span class="p">();</span>
-<a name="line-233"></a> <span class="p">}</span>
-<a name="line-234"></a>
-<a name="line-235"></a> <span class="c1">// tags</span>
-<a name="line-236"></a>
-<a name="line-237"></a> <span class="n">rootTag</span> <span class="o">=</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">findTAlbum</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-238"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">rootTag</span><span class="p">);</span>
-<a name="line-239"></a>
-<a name="line-240"></a><span class="hll"> <span class="n">safeCreateTAlbum</span><span class="p">(</span><span class="n">rootTag</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;root0&quot;</span><span class="p">),</span> <span class="n">talbumRoot0</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-241"></a><span class="hll"> <span class="n">safeCreateTAlbum</span><span class="p">(</span><span class="n">rootTag</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;root1&quot;</span><span class="p">),</span> <span class="n">talbumRoot1</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-242"></a>
-<a name="line-243"></a><span class="hll"> <span class="n">safeCreateTAlbum</span><span class="p">(</span><span class="n">talbumRoot0</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;child0 root 0&quot;</span><span class="p">),</span> <span class="n">talbumChild0Root0</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-244"></a><span class="hll"> <span class="n">safeCreateTAlbum</span><span class="p">(</span><span class="n">talbumRoot0</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;child1 root 0&quot;</span><span class="p">),</span> <span class="n">talbumChild1Root0</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-245"></a>
-<a name="line-246"></a><span class="hll"> <span class="n">safeCreateTAlbum</span><span class="p">(</span><span class="n">talbumChild1Root0</span><span class="p">,</span> <span class="n">sameName</span><span class="p">,</span> <span class="n">talbumChild0Child1Root0</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-247"></a>
-<a name="line-248"></a><span class="hll"> <span class="n">safeCreateTAlbum</span><span class="p">(</span><span class="n">talbumRoot1</span><span class="p">,</span> <span class="n">sameName</span><span class="p">,</span> <span class="n">talbumChild0Root1</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-249"></a>
-<a name="line-250"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;created tags&quot;</span><span class="p">;</span>
-<a name="line-251"></a>
-<a name="line-252"></a> <span class="c1">// add some images for having date albums</span>
-<a name="line-253"></a>
-<a name="line-254"></a> <span class="n">QDir</span> <span class="nf">imageDir</span><span class="p">(</span><span class="n">IMAGE_PATH</span><span class="p">);</span>
-<a name="line-255"></a> <span class="n">imageDir</span><span class="p">.</span><span class="n">setNameFilters</span><span class="p">(</span><span class="n">QStringList</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;*.jpg&quot;</span><span class="p">));</span>
-<a name="line-256"></a> <span class="n">QStringList</span> <span class="n">imageFiles</span> <span class="o">=</span> <span class="n">imageDir</span><span class="p">.</span><span class="n">entryList</span><span class="p">();</span>
-<a name="line-257"></a>
-<a name="line-258"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;copying images &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">imageFiles</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; to &quot;</span>
-<a name="line-259"></a> <span class="o">&lt;&lt;</span> <span class="n">palbumChild0Root0</span><span class="o">-&gt;</span><span class="n">fileUrl</span><span class="p">();</span>
+<a name="line-230"></a><span class="cp">#else</span>
+<a name="line-231"></a>
+<a name="line-232"></a> <span class="n">QDateTime</span> <span class="n">ctime</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">created</span><span class="p">();</span>
+<a name="line-233"></a>
+<a name="line-234"></a><span class="cp">#endif</span>
+<a name="line-235"></a>
+<a name="line-236"></a> <span class="n">QDateTime</span> <span class="n">mtime</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">lastModified</span><span class="p">();</span>
+<a name="line-237"></a>
+<a name="line-238"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ctime</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">mtime</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
+<a name="line-239"></a> <span class="p">{</span>
+<a name="line-240"></a> <span class="n">m_dateTime</span> <span class="o">=</span> <span class="n">qMax</span><span class="p">(</span><span class="n">ctime</span><span class="p">,</span> <span class="n">mtime</span><span class="p">);</span>
+<a name="line-241"></a> <span class="p">}</span>
+<a name="line-242"></a> <span class="k">else</span>
+<a name="line-243"></a> <span class="p">{</span>
+<a name="line-244"></a> <span class="n">m_dateTime</span> <span class="o">=</span> <span class="n">qMin</span><span class="p">(</span><span class="n">ctime</span><span class="p">,</span> <span class="n">mtime</span><span class="p">);</span>
+<a name="line-245"></a> <span class="p">}</span>
+<a name="line-246"></a> <span class="p">}</span>
+<a name="line-247"></a>
+<a name="line-248"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">meta</span><span class="p">)</span>
+<a name="line-249"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-250"></a>
+<a name="line-251"></a> <span class="c1">// The way we read the coordinates here is problematic</span>
+<a name="line-252"></a> <span class="c1">// if the coordinates were in the file initially, but</span>
+<a name="line-253"></a> <span class="c1">// the user deleted them in the database. Then we still load</span>
+<a name="line-254"></a> <span class="c1">// them from the file. On the other hand, we can not clear</span>
+<a name="line-255"></a> <span class="c1">// the coordinates, because then we would loose them if</span>
+<a name="line-256"></a> <span class="c1">// they are only stored in the database.</span>
+<a name="line-257"></a><span class="cm">/*</span>
+<a name="line-258"></a><span class="cm"> m_gpsData.clear();</span>
+<a name="line-259"></a><span class="cm">*/</span>
<a name="line-260"></a>
-<a name="line-261"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">imageFile</span><span class="p">,</span> <span class="n">imageFiles</span><span class="p">)</span>
+<a name="line-261"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasCoordinates</span><span class="p">())</span>
<a name="line-262"></a> <span class="p">{</span>
-<a name="line-263"></a> <span class="n">QString</span> <span class="n">src</span> <span class="o">=</span> <span class="n">IMAGE_PATH</span> <span class="o">+</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">imageFile</span><span class="p">;</span>
-<a name="line-264"></a> <span class="n">QString</span> <span class="n">dst</span> <span class="o">=</span> <span class="n">palbumChild0Root0</span><span class="o">-&gt;</span><span class="n">fileUrl</span><span class="p">().</span><span class="n">toLocalFile</span><span class="p">()</span> <span class="o">+</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">imageFile</span><span class="p">;</span>
-<a name="line-265"></a> <span class="kt">bool</span> <span class="n">copied</span> <span class="o">=</span> <span class="n">QFile</span><span class="o">::</span><span class="n">copy</span><span class="p">(</span><span class="n">src</span><span class="p">,</span> <span class="n">dst</span><span class="p">);</span>
-<a name="line-266"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="n">copied</span><span class="p">,</span> <span class="s">&quot;Test images must be copied&quot;</span><span class="p">);</span>
-<a name="line-267"></a> <span class="p">}</span>
+<a name="line-263"></a> <span class="c1">// could not load the coordinates from the interface,</span>
+<a name="line-264"></a> <span class="c1">// read them directly from the file</span>
+<a name="line-265"></a>
+<a name="line-266"></a> <span class="kt">double</span> <span class="n">lat</span><span class="p">,</span> <span class="n">lng</span><span class="p">;</span>
+<a name="line-267"></a> <span class="kt">bool</span> <span class="n">haveCoordinates</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">getGPSLatitudeNumber</span><span class="p">(</span><span class="o">&amp;</span><span class="n">lat</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">getGPSLongitudeNumber</span><span class="p">(</span><span class="o">&amp;</span><span class="n">lng</span><span class="p">);</span>
<a name="line-268"></a>
-<a name="line-269"></a> <span class="n">ScanController</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">completeCollectionScan</span><span class="p">();</span>
-<a name="line-270"></a>
-<a name="line-271"></a> <span class="k">if</span> <span class="p">(</span><span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allDAlbums</span><span class="p">().</span><span class="n">count</span><span class="p">()</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">)</span>
-<a name="line-272"></a> <span class="p">{</span>
-<a name="line-273"></a> <span class="n">ensureItemCounts</span><span class="p">();</span>
-<a name="line-274"></a> <span class="p">}</span>
-<a name="line-275"></a>
-<a name="line-276"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;date albums: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allDAlbums</span><span class="p">();</span>
-<a name="line-277"></a>
-<a name="line-278"></a> <span class="c1">// root + 2 years + 2 and 3 months per year + (1997 as test year for date ordering with 12 months) = 21</span>
-<a name="line-279"></a>
-<a name="line-280"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allDAlbums</span><span class="p">().</span><span class="n">size</span><span class="p">(),</span> <span class="mi">21</span><span class="p">);</span>
-<a name="line-281"></a>
-<a name="line-282"></a> <span class="c1">// ensure that there is a root date album</span>
-<a name="line-283"></a>
-<a name="line-284"></a> <span class="n">DAlbum</span><span class="o">*</span> <span class="k">const</span> <span class="n">rootFromAlbumManager</span> <span class="o">=</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">findDAlbum</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-285"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">rootFromAlbumManager</span><span class="p">);</span>
-<a name="line-286"></a> <span class="n">DAlbum</span><span class="o">*</span> <span class="n">rootFromList</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-269"></a> <span class="k">if</span> <span class="p">(</span><span class="n">haveCoordinates</span><span class="p">)</span>
+<a name="line-270"></a> <span class="p">{</span>
+<a name="line-271"></a> <span class="n">GeoCoordinates</span> <span class="n">coordinates</span><span class="p">(</span><span class="n">lat</span><span class="p">,</span> <span class="n">lng</span><span class="p">);</span>
+<a name="line-272"></a> <span class="kt">double</span> <span class="n">alt</span><span class="p">;</span>
+<a name="line-273"></a>
+<a name="line-274"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="o">-&gt;</span><span class="n">getGPSAltitude</span><span class="p">(</span><span class="o">&amp;</span><span class="n">alt</span><span class="p">))</span>
+<a name="line-275"></a> <span class="p">{</span>
+<a name="line-276"></a> <span class="n">coordinates</span><span class="p">.</span><span class="n">setAlt</span><span class="p">(</span><span class="n">alt</span><span class="p">);</span>
+<a name="line-277"></a> <span class="p">}</span>
+<a name="line-278"></a>
+<a name="line-279"></a> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">setCoordinates</span><span class="p">(</span><span class="n">coordinates</span><span class="p">);</span>
+<a name="line-280"></a> <span class="p">}</span>
+<a name="line-281"></a> <span class="p">}</span>
+<a name="line-282"></a>
+<a name="line-283"></a> <span class="cm">/**</span>
+<a name="line-284"></a><span class="cm"> * @todo It seems that exiv2 provides EXIF entries if XMP sidecar entries exist,</span>
+<a name="line-285"></a><span class="cm"> * therefore no need to read XMP as well?</span>
+<a name="line-286"></a><span class="cm"> */</span>
<a name="line-287"></a>
-<a name="line-288"></a> <span class="n">foreach</span> <span class="p">(</span><span class="n">Album</span><span class="o">*</span> <span class="k">const</span> <span class="n">album</span><span class="p">,</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allDAlbums</span><span class="p">())</span>
-<a name="line-289"></a> <span class="p">{</span>
-<a name="line-290"></a> <span class="n">DAlbum</span><span class="o">*</span> <span class="k">const</span> <span class="n">dAlbum</span> <span class="o">=</span> <span class="k">dynamic_cast</span><span class="o">&lt;</span><span class="n">DAlbum</span><span class="o">*&gt;</span> <span class="p">(</span><span class="n">album</span><span class="p">);</span>
-<a name="line-291"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">dAlbum</span><span class="p">);</span>
-<a name="line-292"></a>
-<a name="line-293"></a> <span class="k">if</span> <span class="p">(</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">isRoot</span><span class="p">())</span>
-<a name="line-294"></a> <span class="p">{</span>
-<a name="line-295"></a> <span class="n">rootFromList</span> <span class="o">=</span> <span class="n">dAlbum</span><span class="p">;</span>
-<a name="line-296"></a> <span class="p">}</span>
-<a name="line-297"></a> <span class="p">}</span>
+<a name="line-288"></a> <span class="c1">// read the remaining GPS information from the file:</span>
+<a name="line-289"></a>
+<a name="line-290"></a> <span class="k">const</span> <span class="n">QByteArray</span> <span class="n">speedRef</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">getExifTagData</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSSpeedRef&quot;</span><span class="p">);</span>
+<a name="line-291"></a> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="o">!</span><span class="n">speedRef</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">();</span>
+<a name="line-292"></a> <span class="kt">long</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">;</span>
+<a name="line-293"></a> <span class="n">success</span> <span class="o">&amp;=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSSpeed&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-294"></a>
+<a name="line-295"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span><span class="p">)</span>
+<a name="line-296"></a> <span class="p">{</span>
+<a name="line-297"></a> <span class="c1">// be relaxed about 0/0</span>
<a name="line-298"></a>
-<a name="line-299"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">rootFromList</span><span class="p">);</span>
-<a name="line-300"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">rootFromList</span> <span class="o">==</span> <span class="n">rootFromAlbumManager</span><span class="p">);</span>
-<a name="line-301"></a><span class="p">}</span>
-<a name="line-302"></a>
-<a name="line-303"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">testStartAlbumModel</span><span class="p">()</span>
-<a name="line-304"></a><span class="p">{</span>
-<a name="line-305"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start AlbumModelTest::testStartAlbumModel()&quot;</span><span class="p">;</span>
+<a name="line-299"></a> <span class="k">if</span> <span class="p">((</span><span class="n">num</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">den</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">))</span>
+<a name="line-300"></a> <span class="p">{</span>
+<a name="line-301"></a> <span class="n">den</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">;</span>
+<a name="line-302"></a> <span class="p">}</span>
+<a name="line-303"></a>
+<a name="line-304"></a> <span class="k">const</span> <span class="n">qreal</span> <span class="n">speedInRef</span> <span class="o">=</span> <span class="n">qreal</span><span class="p">(</span><span class="n">num</span><span class="p">)</span><span class="o">/</span><span class="n">qreal</span><span class="p">(</span><span class="n">den</span><span class="p">);</span>
+<a name="line-305"></a> <span class="n">qreal</span> <span class="n">FactorToMetersPerSecond</span><span class="p">;</span>
<a name="line-306"></a>
-<a name="line-307"></a> <span class="c1">// verify that the start album model got all these changes</span>
-<a name="line-308"></a>
-<a name="line-309"></a> <span class="c1">// one root</span>
+<a name="line-307"></a> <span class="k">if</span> <span class="p">(</span><span class="n">speedRef</span><span class="p">.</span><span class="n">startsWith</span><span class="p">(</span><span class="sc">&#39;K&#39;</span><span class="p">))</span>
+<a name="line-308"></a> <span class="p">{</span>
+<a name="line-309"></a> <span class="c1">// km/h = 1000 * 3600</span>
<a name="line-310"></a>
-<a name="line-311"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">startModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(),</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-312"></a>
-<a name="line-313"></a> <span class="c1">// one collection</span>
-<a name="line-314"></a>
-<a name="line-315"></a> <span class="n">QModelIndex</span> <span class="n">rootIndex</span> <span class="o">=</span> <span class="n">startModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-316"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">startModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">rootIndex</span><span class="p">),</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-311"></a> <span class="n">FactorToMetersPerSecond</span> <span class="o">=</span> <span class="mf">1.0</span><span class="o">/</span><span class="mf">3.6</span><span class="p">;</span>
+<a name="line-312"></a> <span class="p">}</span>
+<a name="line-313"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">speedRef</span><span class="p">.</span><span class="n">startsWith</span><span class="p">(</span><span class="sc">&#39;M&#39;</span><span class="p">))</span>
+<a name="line-314"></a> <span class="p">{</span>
+<a name="line-315"></a> <span class="c1">// TODO: someone please check that this is the &#39;right&#39; mile</span>
+<a name="line-316"></a> <span class="c1">// miles/hour = 1609.344 meters / hour = 1609.344 meters / 3600 seconds</span>
<a name="line-317"></a>
-<a name="line-318"></a> <span class="c1">// two albums in the collection</span>
-<a name="line-319"></a>
-<a name="line-320"></a> <span class="n">QModelIndex</span> <span class="n">collectionIndex</span> <span class="o">=</span> <span class="n">startModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">rootIndex</span><span class="p">);</span>
-<a name="line-321"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">startModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">collectionIndex</span><span class="p">),</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-322"></a>
-<a name="line-323"></a> <span class="c1">// this is should be enough for now</span>
+<a name="line-318"></a> <span class="n">FactorToMetersPerSecond</span> <span class="o">=</span> <span class="mf">1.0</span> <span class="o">/</span> <span class="p">(</span><span class="mf">1609.344</span> <span class="o">/</span> <span class="mf">3600.0</span><span class="p">);</span>
+<a name="line-319"></a> <span class="p">}</span>
+<a name="line-320"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">speedRef</span><span class="p">.</span><span class="n">startsWith</span><span class="p">(</span><span class="sc">&#39;N&#39;</span><span class="p">))</span>
+<a name="line-321"></a> <span class="p">{</span>
+<a name="line-322"></a> <span class="c1">// speed is in knots.</span>
+<a name="line-323"></a> <span class="c1">// knot = one nautical mile / hour = 1852 meters / hour = 1852 meters / 3600 seconds</span>
<a name="line-324"></a>
-<a name="line-325"></a> <span class="c1">// We must have received an added notation for everything except album root</span>
-<a name="line-326"></a> <span class="c1">// and collection</span>
-<a name="line-327"></a>
-<a name="line-328"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">addedIds</span><span class="p">.</span><span class="n">size</span><span class="p">(),</span> <span class="mi">7</span><span class="p">);</span>
-<a name="line-329"></a><span class="p">}</span>
-<a name="line-330"></a>
-<a name="line-331"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">ensureItemCounts</span><span class="p">()</span>
-<a name="line-332"></a><span class="p">{</span>
-<a name="line-333"></a> <span class="c1">// trigger listing job</span>
-<a name="line-334"></a>
-<a name="line-335"></a> <span class="n">QEventLoop</span> <span class="n">dAlbumLoop</span><span class="p">;</span>
-<a name="line-336"></a>
-<a name="line-337"></a> <span class="n">connect</span><span class="p">(</span><span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">(),</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalAllDAlbumsLoaded</span><span class="p">()),</span>
-<a name="line-338"></a> <span class="o">&amp;</span><span class="n">dAlbumLoop</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">quit</span><span class="p">()));</span>
-<a name="line-339"></a>
-<a name="line-340"></a> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">prepareItemCounts</span><span class="p">();</span>
-<a name="line-341"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Waiting for AlbumManager to create DAlbums...&quot;</span><span class="p">;</span>
-<a name="line-342"></a> <span class="n">dAlbumLoop</span><span class="p">.</span><span class="n">exec</span><span class="p">();</span>
-<a name="line-343"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;DAlbums were created&quot;</span><span class="p">;</span>
-<a name="line-344"></a>
-<a name="line-345"></a> <span class="k">while</span> <span class="p">(</span><span class="n">palbumCountMap</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">&lt;</span> <span class="mi">8</span><span class="p">)</span>
-<a name="line-346"></a> <span class="p">{</span>
-<a name="line-347"></a> <span class="n">QEventLoop</span> <span class="n">pAlbumLoop</span><span class="p">;</span>
-<a name="line-348"></a>
-<a name="line-349"></a> <span class="n">connect</span><span class="p">(</span><span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">(),</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalPAlbumsDirty</span><span class="p">(</span><span class="n">QMap</span><span class="o">&lt;</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="o">&gt;</span><span class="p">)),</span>
-<a name="line-350"></a> <span class="o">&amp;</span><span class="n">pAlbumLoop</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">quit</span><span class="p">()));</span>
-<a name="line-351"></a>
-<a name="line-352"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Waiting for first PAlbum count map&quot;</span><span class="p">;</span>
-<a name="line-353"></a> <span class="n">pAlbumLoop</span><span class="p">.</span><span class="n">exec</span><span class="p">();</span>
-<a name="line-354"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Got new PAlbum count map&quot;</span><span class="p">;</span>
-<a name="line-355"></a> <span class="p">}</span>
-<a name="line-356"></a><span class="p">}</span>
-<a name="line-357"></a>
-<a name="line-358"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">slotStartModelRowsInserted</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">parent</span><span class="p">,</span> <span class="kt">int</span> <span class="n">start</span><span class="p">,</span> <span class="kt">int</span> <span class="n">end</span><span class="p">)</span>
-<a name="line-359"></a><span class="p">{</span>
-<a name="line-360"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;called, parent:&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">parent</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;, start:&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">start</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;, end:&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">end</span><span class="p">;</span>
-<a name="line-361"></a>
-<a name="line-362"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">row</span> <span class="o">=</span> <span class="n">start</span> <span class="p">;</span> <span class="n">row</span> <span class="o">&lt;=</span> <span class="n">end</span> <span class="p">;</span> <span class="o">++</span><span class="n">row</span><span class="p">)</span>
-<a name="line-363"></a> <span class="p">{</span>
-<a name="line-364"></a> <span class="n">QModelIndex</span> <span class="n">child</span> <span class="o">=</span> <span class="n">startModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">parent</span><span class="p">);</span>
-<a name="line-365"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">child</span><span class="p">.</span><span class="n">isValid</span><span class="p">());</span>
-<a name="line-366"></a> <span class="n">Album</span><span class="o">*</span> <span class="n">album</span> <span class="o">=</span> <span class="n">startModel</span><span class="o">-&gt;</span><span class="n">albumForIndex</span><span class="p">(</span><span class="n">child</span><span class="p">);</span>
-<a name="line-367"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">id</span> <span class="o">=</span> <span class="n">child</span><span class="p">.</span><span class="n">data</span><span class="p">(</span><span class="n">AbstractAlbumModel</span><span class="o">::</span><span class="n">AlbumIdRole</span><span class="p">).</span><span class="n">toInt</span><span class="p">();</span>
-<a name="line-368"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">album</span><span class="p">);</span>
-<a name="line-369"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;added album with id&quot;</span>
-<a name="line-370"></a> <span class="o">&lt;&lt;</span> <span class="n">id</span>
-<a name="line-371"></a> <span class="o">&lt;&lt;</span> <span class="s">&quot;and name&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">album</span><span class="o">-&gt;</span><span class="n">title</span><span class="p">();</span>
-<a name="line-372"></a> <span class="n">addedIds</span> <span class="o">&lt;&lt;</span> <span class="n">id</span><span class="p">;</span>
-<a name="line-373"></a> <span class="p">}</span>
-<a name="line-374"></a><span class="p">}</span>
-<a name="line-375"></a>
-<a name="line-376"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">slotStartModelDataChanged</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">topLeft</span><span class="p">,</span> <span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">bottomRight</span><span class="p">)</span>
-<a name="line-377"></a><span class="p">{</span>
-<a name="line-378"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">row</span> <span class="o">=</span> <span class="n">topLeft</span><span class="p">.</span><span class="n">row</span><span class="p">()</span> <span class="p">;</span> <span class="n">row</span> <span class="o">&lt;=</span> <span class="n">bottomRight</span><span class="p">.</span><span class="n">row</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">row</span><span class="p">)</span>
-<a name="line-379"></a> <span class="p">{</span>
-<a name="line-380"></a> <span class="n">QModelIndex</span> <span class="n">index</span> <span class="o">=</span> <span class="n">startModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">topLeft</span><span class="p">.</span><span class="n">column</span><span class="p">(),</span> <span class="n">topLeft</span><span class="p">.</span><span class="n">parent</span><span class="p">());</span>
-<a name="line-381"></a>
-<a name="line-382"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">index</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
-<a name="line-383"></a> <span class="p">{</span>
-<a name="line-384"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Illegal index received&quot;</span><span class="p">;</span>
-<a name="line-385"></a> <span class="k">continue</span><span class="p">;</span>
-<a name="line-386"></a> <span class="p">}</span>
-<a name="line-387"></a>
-<a name="line-388"></a> <span class="kt">int</span> <span class="n">albumId</span> <span class="o">=</span> <span class="n">index</span><span class="p">.</span><span class="n">data</span><span class="p">(</span><span class="n">AbstractAlbumModel</span><span class="o">::</span><span class="n">AlbumIdRole</span><span class="p">).</span><span class="n">toInt</span><span class="p">();</span>
+<a name="line-325"></a> <span class="n">FactorToMetersPerSecond</span> <span class="o">=</span> <span class="mf">1.0</span> <span class="o">/</span> <span class="p">(</span><span class="mf">1852.0</span> <span class="o">/</span> <span class="mf">3600.0</span><span class="p">);</span>
+<a name="line-326"></a> <span class="p">}</span>
+<a name="line-327"></a> <span class="k">else</span>
+<a name="line-328"></a> <span class="p">{</span>
+<a name="line-329"></a> <span class="n">success</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-330"></a> <span class="p">}</span>
+<a name="line-331"></a>
+<a name="line-332"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span><span class="p">)</span>
+<a name="line-333"></a> <span class="p">{</span>
+<a name="line-334"></a> <span class="k">const</span> <span class="n">qreal</span> <span class="n">speedInMetersPerSecond</span> <span class="o">=</span> <span class="n">speedInRef</span> <span class="o">*</span> <span class="n">FactorToMetersPerSecond</span><span class="p">;</span>
+<a name="line-335"></a> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">setSpeed</span><span class="p">(</span><span class="n">speedInMetersPerSecond</span><span class="p">);</span>
+<a name="line-336"></a> <span class="p">}</span>
+<a name="line-337"></a> <span class="p">}</span>
+<a name="line-338"></a>
+<a name="line-339"></a> <span class="c1">// number of satellites</span>
+<a name="line-340"></a>
+<a name="line-341"></a> <span class="k">const</span> <span class="n">QString</span> <span class="n">gpsSatellitesString</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSSatellites&quot;</span><span class="p">);</span>
+<a name="line-342"></a> <span class="kt">bool</span> <span class="n">satellitesOkay</span> <span class="o">=</span> <span class="o">!</span><span class="n">gpsSatellitesString</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">();</span>
+<a name="line-343"></a>
+<a name="line-344"></a> <span class="k">if</span> <span class="p">(</span><span class="n">satellitesOkay</span><span class="p">)</span>
+<a name="line-345"></a> <span class="p">{</span>
+<a name="line-346"></a> <span class="cm">/**</span>
+<a name="line-347"></a><span class="cm"> * @todo Here we only accept a single integer denoting the number of satellites used</span>
+<a name="line-348"></a><span class="cm"> * but not detailed information about all satellites.</span>
+<a name="line-349"></a><span class="cm"> */</span>
+<a name="line-350"></a>
+<a name="line-351"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">nSatellites</span> <span class="o">=</span> <span class="n">gpsSatellitesString</span><span class="p">.</span><span class="n">toInt</span><span class="p">(</span><span class="o">&amp;</span><span class="n">satellitesOkay</span><span class="p">);</span>
+<a name="line-352"></a>
+<a name="line-353"></a> <span class="k">if</span> <span class="p">(</span><span class="n">satellitesOkay</span><span class="p">)</span>
+<a name="line-354"></a> <span class="p">{</span>
+<a name="line-355"></a> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">setNSatellites</span><span class="p">(</span><span class="n">nSatellites</span><span class="p">);</span>
+<a name="line-356"></a> <span class="p">}</span>
+<a name="line-357"></a> <span class="p">}</span>
+<a name="line-358"></a>
+<a name="line-359"></a> <span class="c1">// fix type / measure mode</span>
+<a name="line-360"></a>
+<a name="line-361"></a> <span class="k">const</span> <span class="n">QByteArray</span> <span class="n">gpsMeasureModeByteArray</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">getExifTagData</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSMeasureMode&quot;</span><span class="p">);</span>
+<a name="line-362"></a> <span class="kt">bool</span> <span class="n">measureModeOkay</span> <span class="o">=</span> <span class="o">!</span><span class="n">gpsMeasureModeByteArray</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">();</span>
+<a name="line-363"></a>
+<a name="line-364"></a> <span class="k">if</span> <span class="p">(</span><span class="n">measureModeOkay</span><span class="p">)</span>
+<a name="line-365"></a> <span class="p">{</span>
+<a name="line-366"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">measureMode</span> <span class="o">=</span> <span class="n">gpsMeasureModeByteArray</span><span class="p">.</span><span class="n">toInt</span><span class="p">(</span><span class="o">&amp;</span><span class="n">measureModeOkay</span><span class="p">);</span>
+<a name="line-367"></a>
+<a name="line-368"></a> <span class="k">if</span> <span class="p">(</span><span class="n">measureModeOkay</span><span class="p">)</span>
+<a name="line-369"></a> <span class="p">{</span>
+<a name="line-370"></a> <span class="k">if</span> <span class="p">((</span><span class="n">measureMode</span> <span class="o">==</span> <span class="mi">2</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">measureMode</span> <span class="o">==</span> <span class="mi">3</span><span class="p">))</span>
+<a name="line-371"></a> <span class="p">{</span>
+<a name="line-372"></a> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">setFixType</span><span class="p">(</span><span class="n">measureMode</span><span class="p">);</span>
+<a name="line-373"></a> <span class="p">}</span>
+<a name="line-374"></a> <span class="p">}</span>
+<a name="line-375"></a> <span class="p">}</span>
+<a name="line-376"></a>
+<a name="line-377"></a> <span class="c1">// read the DOP value:</span>
+<a name="line-378"></a>
+<a name="line-379"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDOP&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
+<a name="line-380"></a>
+<a name="line-381"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span><span class="p">)</span>
+<a name="line-382"></a> <span class="p">{</span>
+<a name="line-383"></a> <span class="c1">// be relaxed about 0/0</span>
+<a name="line-384"></a>
+<a name="line-385"></a> <span class="k">if</span> <span class="p">((</span><span class="n">num</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">den</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">))</span>
+<a name="line-386"></a> <span class="p">{</span>
+<a name="line-387"></a> <span class="n">den</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">;</span>
+<a name="line-388"></a> <span class="p">}</span>
<a name="line-389"></a>
-<a name="line-390"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">addedIds</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">albumId</span><span class="p">))</span>
-<a name="line-391"></a> <span class="p">{</span>
-<a name="line-392"></a> <span class="n">QString</span> <span class="n">message</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Album id &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">albumId</span><span class="p">)</span> <span class="o">+</span>
-<a name="line-393"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot; was changed before adding signal was received&quot;</span><span class="p">);</span>
-<a name="line-394"></a> <span class="n">QFAIL</span><span class="p">(</span><span class="n">message</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-395"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">message</span><span class="p">;</span>
-<a name="line-396"></a> <span class="p">}</span>
-<a name="line-397"></a> <span class="p">}</span>
-<a name="line-398"></a><span class="p">}</span>
+<a name="line-390"></a> <span class="k">const</span> <span class="n">qreal</span> <span class="n">dop</span> <span class="o">=</span> <span class="n">qreal</span><span class="p">(</span><span class="n">num</span><span class="p">)</span><span class="o">/</span><span class="n">qreal</span><span class="p">(</span><span class="n">den</span><span class="p">);</span>
+<a name="line-391"></a>
+<a name="line-392"></a> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">setDop</span><span class="p">(</span><span class="n">dop</span><span class="p">);</span>
+<a name="line-393"></a> <span class="p">}</span>
+<a name="line-394"></a>
+<a name="line-395"></a> <span class="c1">// mark us as not-dirty, because the data was just loaded:</span>
+<a name="line-396"></a>
+<a name="line-397"></a> <span class="n">m_dirty</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-398"></a> <span class="n">m_savedState</span> <span class="o">=</span> <span class="n">m_gpsData</span><span class="p">;</span>
<a name="line-399"></a>
-<a name="line-400"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">deletePAlbum</span><span class="p">(</span><span class="n">PAlbum</span><span class="o">*</span> <span class="n">album</span><span class="p">)</span>
-<a name="line-401"></a><span class="p">{</span>
-<a name="line-402"></a> <span class="n">QDir</span> <span class="n">dir</span><span class="p">(</span><span class="n">album</span><span class="o">-&gt;</span><span class="n">folderPath</span><span class="p">());</span>
-<a name="line-403"></a> <span class="n">dir</span><span class="p">.</span><span class="n">removeRecursively</span><span class="p">();</span>
-<a name="line-404"></a><span class="p">}</span>
-<a name="line-405"></a>
-<a name="line-406"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">setLastPAlbumCountMap</span><span class="p">(</span><span class="k">const</span> <span class="n">QMap</span><span class="o">&lt;</span><span class="kt">int</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&amp;</span><span class="n">map</span><span class="p">)</span>
-<a name="line-407"></a><span class="p">{</span>
-<a name="line-408"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Receiving new count map &quot;</span><span class="o">&lt;&lt;</span> <span class="n">map</span><span class="p">;</span>
-<a name="line-409"></a> <span class="n">palbumCountMap</span> <span class="o">=</span> <span class="n">map</span><span class="p">;</span>
-<a name="line-410"></a><span class="p">}</span>
-<a name="line-411"></a>
-<a name="line-412"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">cleanup</span><span class="p">()</span>
-<a name="line-413"></a><span class="p">{</span>
-<a name="line-414"></a> <span class="k">if</span> <span class="p">(</span><span class="n">startModel</span><span class="p">)</span>
-<a name="line-415"></a> <span class="p">{</span>
-<a name="line-416"></a> <span class="n">disconnect</span><span class="p">(</span><span class="n">startModel</span><span class="p">);</span>
-<a name="line-417"></a> <span class="p">}</span>
-<a name="line-418"></a>
-<a name="line-419"></a> <span class="k">delete</span> <span class="n">startModel</span><span class="p">;</span>
-<a name="line-420"></a> <span class="n">addedIds</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
-<a name="line-421"></a>
-<a name="line-422"></a> <span class="c1">// remove all test data</span>
-<a name="line-423"></a>
-<a name="line-424"></a> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">refresh</span><span class="p">();</span>
-<a name="line-425"></a>
-<a name="line-426"></a> <span class="c1">// remove all palbums&#39; directories</span>
-<a name="line-427"></a>
-<a name="line-428"></a> <span class="n">deletePAlbum</span><span class="p">(</span><span class="n">palbumRoot0</span><span class="p">);</span>
-<a name="line-429"></a> <span class="n">deletePAlbum</span><span class="p">(</span><span class="n">palbumRoot1</span><span class="p">);</span>
-<a name="line-430"></a> <span class="n">deletePAlbum</span><span class="p">(</span><span class="n">palbumRoot2</span><span class="p">);</span>
-<a name="line-431"></a>
-<a name="line-432"></a> <span class="c1">// take over changes to database</span>
-<a name="line-433"></a>
-<a name="line-434"></a> <span class="n">ScanController</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">completeCollectionScan</span><span class="p">();</span>
-<a name="line-435"></a>
-<a name="line-436"></a> <span class="c1">// reread from database</span>
-<a name="line-437"></a>
-<a name="line-438"></a> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">refresh</span><span class="p">();</span>
+<a name="line-400"></a> <span class="n">emitDataChanged</span><span class="p">();</span>
+<a name="line-401"></a>
+<a name="line-402"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-403"></a><span class="p">}</span>
+<a name="line-404"></a>
+<a name="line-405"></a><span class="n">QVariant</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">data</span><span class="p">(</span><span class="k">const</span> <span class="kt">int</span> <span class="n">column</span><span class="p">,</span> <span class="k">const</span> <span class="kt">int</span> <span class="n">role</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-406"></a><span class="p">{</span>
+<a name="line-407"></a> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnFilename</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
+<a name="line-408"></a> <span class="p">{</span>
+<a name="line-409"></a> <span class="k">return</span> <span class="n">m_url</span><span class="p">.</span><span class="n">fileName</span><span class="p">();</span>
+<a name="line-410"></a> <span class="p">}</span>
+<a name="line-411"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnDateTime</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
+<a name="line-412"></a> <span class="p">{</span>
+<a name="line-413"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_dateTime</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
+<a name="line-414"></a> <span class="p">{</span>
+<a name="line-415"></a> <span class="k">return</span> <span class="n">QLocale</span><span class="p">().</span><span class="n">toString</span><span class="p">(</span><span class="n">m_dateTime</span><span class="p">,</span> <span class="n">QLocale</span><span class="o">::</span><span class="n">ShortFormat</span><span class="p">);</span>
+<a name="line-416"></a> <span class="p">}</span>
+<a name="line-417"></a>
+<a name="line-418"></a> <span class="k">return</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Not available&quot;</span><span class="p">);</span>
+<a name="line-419"></a> <span class="p">}</span>
+<a name="line-420"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">RoleCoordinates</span><span class="p">)</span>
+<a name="line-421"></a> <span class="p">{</span>
+<a name="line-422"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="o">::</span><span class="n">fromValue</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">());</span>
+<a name="line-423"></a> <span class="p">}</span>
+<a name="line-424"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnLatitude</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
+<a name="line-425"></a> <span class="p">{</span>
+<a name="line-426"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">hasLatitude</span><span class="p">())</span>
+<a name="line-427"></a> <span class="p">{</span>
+<a name="line-428"></a> <span class="k">return</span> <span class="n">QString</span><span class="p">();</span>
+<a name="line-429"></a> <span class="p">}</span>
+<a name="line-430"></a>
+<a name="line-431"></a> <span class="k">return</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">lat</span><span class="p">(),</span> <span class="mi">7</span><span class="p">);</span>
+<a name="line-432"></a> <span class="p">}</span>
+<a name="line-433"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnLongitude</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
+<a name="line-434"></a> <span class="p">{</span>
+<a name="line-435"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">hasLongitude</span><span class="p">())</span>
+<a name="line-436"></a> <span class="p">{</span>
+<a name="line-437"></a> <span class="k">return</span> <span class="n">QString</span><span class="p">();</span>
+<a name="line-438"></a> <span class="p">}</span>
<a name="line-439"></a>
-<a name="line-440"></a> <span class="c1">// root + one collection</span>
-<a name="line-441"></a>
-<a name="line-442"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allPAlbums</span><span class="p">().</span><span class="n">size</span><span class="p">(),</span> <span class="mi">2</span><span class="p">);</span>
-<a name="line-443"></a>
-<a name="line-444"></a> <span class="c1">// remove all tags</span>
-<a name="line-445"></a>
-<a name="line-446"></a> <span class="n">QString</span> <span class="n">error</span><span class="p">;</span>
-<a name="line-447"></a> <span class="kt">bool</span> <span class="n">removed</span> <span class="o">=</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">deleteTAlbum</span><span class="p">(</span><span class="n">talbumRoot0</span><span class="p">,</span> <span class="n">error</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
-<a name="line-448"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="n">removed</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;Error removing a tag: %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">error</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-449"></a> <span class="n">removed</span> <span class="o">=</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">deleteTAlbum</span><span class="p">(</span><span class="n">talbumRoot1</span><span class="p">,</span> <span class="n">error</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
-<a name="line-450"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="n">removed</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;Error removing a tag: %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">error</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-451"></a>
-<a name="line-452"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allTAlbums</span><span class="p">().</span><span class="n">size</span><span class="p">(),</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-453"></a><span class="p">}</span>
-<a name="line-454"></a>
-<a name="line-455"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">testPAlbumModel</span><span class="p">()</span>
-<a name="line-456"></a><span class="p">{</span>
-<a name="line-457"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start AlbumModelTest::testPAlbumModel()&quot;</span><span class="p">;</span>
-<a name="line-458"></a>
-<a name="line-459"></a> <span class="n">AlbumModel</span><span class="o">*</span> <span class="n">albumModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AlbumModel</span><span class="p">();</span>
-<a name="line-460"></a> <span class="n">ModelTest</span><span class="o">*</span> <span class="n">test</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModelTest</span><span class="p">(</span><span class="n">albumModel</span><span class="p">,</span> <span class="k">nullptr</span><span class="p">);</span>
-<a name="line-461"></a> <span class="k">delete</span> <span class="n">test</span><span class="p">;</span>
-<a name="line-462"></a> <span class="k">delete</span> <span class="n">albumModel</span><span class="p">;</span>
-<a name="line-463"></a>
-<a name="line-464"></a> <span class="n">albumModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AlbumModel</span><span class="p">(</span><span class="n">AbstractAlbumModel</span><span class="o">::</span><span class="n">IgnoreRootAlbum</span><span class="p">);</span>
-<a name="line-465"></a> <span class="n">test</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModelTest</span><span class="p">(</span><span class="n">albumModel</span><span class="p">,</span> <span class="k">nullptr</span><span class="p">);</span>
-<a name="line-466"></a> <span class="k">delete</span> <span class="n">test</span><span class="p">;</span>
-<a name="line-467"></a> <span class="k">delete</span> <span class="n">albumModel</span><span class="p">;</span>
-<a name="line-468"></a><span class="p">}</span>
-<a name="line-469"></a>
-<a name="line-470"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">testDisablePAlbumCount</span><span class="p">()</span>
-<a name="line-471"></a><span class="p">{</span>
-<a name="line-472"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start AlbumModelTest::testDisablePAlbumCount()&quot;</span><span class="p">;</span>
+<a name="line-440"></a> <span class="k">return</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">lon</span><span class="p">(),</span> <span class="mi">7</span><span class="p">);</span>
+<a name="line-441"></a> <span class="p">}</span>
+<a name="line-442"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnAltitude</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
+<a name="line-443"></a> <span class="p">{</span>
+<a name="line-444"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">hasAltitude</span><span class="p">())</span>
+<a name="line-445"></a> <span class="p">{</span>
+<a name="line-446"></a> <span class="k">return</span> <span class="n">QString</span><span class="p">();</span>
+<a name="line-447"></a> <span class="p">}</span>
+<a name="line-448"></a>
+<a name="line-449"></a> <span class="k">return</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">alt</span><span class="p">(),</span> <span class="mi">7</span><span class="p">);</span>
+<a name="line-450"></a> <span class="p">}</span>
+<a name="line-451"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnAccuracy</span><span class="p">)</span>
+<a name="line-452"></a> <span class="p">{</span>
+<a name="line-453"></a> <span class="k">if</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">)</span>
+<a name="line-454"></a> <span class="p">{</span>
+<a name="line-455"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasDop</span><span class="p">())</span>
+<a name="line-456"></a> <span class="p">{</span>
+<a name="line-457"></a> <span class="k">return</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;DOP: %1&quot;</span><span class="p">,</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">getDop</span><span class="p">());</span>
+<a name="line-458"></a> <span class="p">}</span>
+<a name="line-459"></a>
+<a name="line-460"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasFixType</span><span class="p">())</span>
+<a name="line-461"></a> <span class="p">{</span>
+<a name="line-462"></a> <span class="k">return</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Fix: %1d&quot;</span><span class="p">,</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">getFixType</span><span class="p">());</span>
+<a name="line-463"></a> <span class="p">}</span>
+<a name="line-464"></a>
+<a name="line-465"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">())</span>
+<a name="line-466"></a> <span class="p">{</span>
+<a name="line-467"></a> <span class="k">return</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;#Sat: %1&quot;</span><span class="p">,</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">getNSatellites</span><span class="p">());</span>
+<a name="line-468"></a> <span class="p">}</span>
+<a name="line-469"></a> <span class="p">}</span>
+<a name="line-470"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">BackgroundRole</span><span class="p">)</span>
+<a name="line-471"></a> <span class="p">{</span>
+<a name="line-472"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">warningLevel</span> <span class="o">=</span> <span class="n">getWarningLevelFromGPSDataContainer</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">);</span>
<a name="line-473"></a>
-<a name="line-474"></a> <span class="n">AlbumModel</span> <span class="n">albumModel</span><span class="p">;</span>
-<a name="line-475"></a> <span class="n">albumModel</span><span class="p">.</span><span class="n">setCountMap</span><span class="p">(</span><span class="n">palbumCountMap</span><span class="p">);</span>
-<a name="line-476"></a> <span class="n">albumModel</span><span class="p">.</span><span class="n">setShowCount</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-477"></a>
-<a name="line-478"></a> <span class="n">QRegExp</span> <span class="nf">countRegEx</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;.+ </span><span class="se">\\</span><span class="s">(</span><span class="se">\\</span><span class="s">d+</span><span class="se">\\</span><span class="s">)&quot;))</span><span class="p">;</span>
-<a name="line-479"></a> <span class="n">countRegEx</span><span class="p">.</span><span class="n">setMinimal</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-480"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;test (10)&quot;</span><span class="p">)));</span>
-<a name="line-481"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;te st (10)&quot;</span><span class="p">)));</span>
-<a name="line-482"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;te st (0)&quot;</span><span class="p">)));</span>
-<a name="line-483"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="o">!</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;te st ()&quot;</span><span class="p">)));</span>
-<a name="line-484"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="o">!</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;te st&quot;</span><span class="p">)));</span>
-<a name="line-485"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="o">!</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;te st (10) bla&quot;</span><span class="p">)));</span>
-<a name="line-486"></a>
-<a name="line-487"></a> <span class="c1">// ensure that all albums except the root album have a count attached</span>
+<a name="line-474"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">warningLevel</span><span class="p">)</span>
+<a name="line-475"></a> <span class="p">{</span>
+<a name="line-476"></a> <span class="k">case</span> <span class="mi">1</span><span class="o">:</span>
+<a name="line-477"></a> <span class="k">return</span> <span class="n">QBrush</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">green</span><span class="p">);</span>
+<a name="line-478"></a>
+<a name="line-479"></a> <span class="k">case</span> <span class="mi">2</span><span class="o">:</span>
+<a name="line-480"></a> <span class="k">return</span> <span class="n">QBrush</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">yellow</span><span class="p">);</span>
+<a name="line-481"></a>
+<a name="line-482"></a> <span class="k">case</span> <span class="mi">3</span><span class="o">:</span>
+<a name="line-483"></a> <span class="c1">// orange</span>
+<a name="line-484"></a> <span class="k">return</span> <span class="n">QBrush</span><span class="p">(</span><span class="n">QColor</span><span class="p">(</span><span class="mh">0xff</span><span class="p">,</span> <span class="mh">0x80</span><span class="p">,</span> <span class="mh">0x00</span><span class="p">));</span>
+<a name="line-485"></a>
+<a name="line-486"></a> <span class="k">case</span> <span class="mi">4</span><span class="o">:</span>
+<a name="line-487"></a> <span class="k">return</span> <span class="n">QBrush</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">red</span><span class="p">);</span>
<a name="line-488"></a>
-<a name="line-489"></a> <span class="n">QModelIndex</span> <span class="n">rootIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">index</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">QModelIndex</span><span class="p">());</span>
-<a name="line-490"></a> <span class="n">QString</span> <span class="n">rootTitle</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">data</span><span class="p">(</span><span class="n">rootIndex</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">();</span>
-<a name="line-491"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="o">!</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">rootTitle</span><span class="p">));</span>
-<a name="line-492"></a>
-<a name="line-493"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">collectionRow</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">collectionRow</span> <span class="o">&lt;</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">rowCount</span><span class="p">(</span><span class="n">rootIndex</span><span class="p">);</span> <span class="o">++</span><span class="n">collectionRow</span><span class="p">)</span>
-<a name="line-494"></a> <span class="p">{</span>
-<a name="line-495"></a> <span class="n">QModelIndex</span> <span class="n">collectionIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">index</span><span class="p">(</span><span class="n">collectionRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">rootIndex</span><span class="p">);</span>
-<a name="line-496"></a> <span class="n">QString</span> <span class="n">collectionTitle</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">data</span><span class="p">(</span><span class="n">collectionIndex</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">();</span>
-<a name="line-497"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">collectionTitle</span><span class="p">),</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1 matching error&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">collectionTitle</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-498"></a>
-<a name="line-499"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">albumRow</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">albumRow</span> <span class="o">&lt;</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">rowCount</span><span class="p">(</span><span class="n">collectionIndex</span><span class="p">);</span> <span class="o">++</span><span class="n">albumRow</span><span class="p">)</span>
-<a name="line-500"></a> <span class="p">{</span>
-<a name="line-501"></a> <span class="n">QModelIndex</span> <span class="n">albumIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">index</span><span class="p">(</span><span class="n">albumRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">collectionIndex</span><span class="p">);</span>
-<a name="line-502"></a> <span class="n">QString</span> <span class="n">albumTitle</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">data</span><span class="p">(</span><span class="n">albumIndex</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">();</span>
-<a name="line-503"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">albumTitle</span><span class="p">),</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1 matching error&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">albumTitle</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-504"></a> <span class="p">}</span>
-<a name="line-505"></a>
-<a name="line-506"></a> <span class="p">}</span>
-<a name="line-507"></a>
-<a name="line-508"></a> <span class="c1">// now disable showing the count</span>
+<a name="line-489"></a> <span class="k">default</span><span class="o">:</span>
+<a name="line-490"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-491"></a> <span class="p">}</span>
+<a name="line-492"></a> <span class="p">}</span>
+<a name="line-493"></a> <span class="p">}</span>
+<a name="line-494"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnDOP</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
+<a name="line-495"></a> <span class="p">{</span>
+<a name="line-496"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasDop</span><span class="p">())</span>
+<a name="line-497"></a> <span class="p">{</span>
+<a name="line-498"></a> <span class="k">return</span> <span class="n">QString</span><span class="p">();</span>
+<a name="line-499"></a> <span class="p">}</span>
+<a name="line-500"></a>
+<a name="line-501"></a> <span class="k">return</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getDop</span><span class="p">());</span>
+<a name="line-502"></a> <span class="p">}</span>
+<a name="line-503"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnFixType</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
+<a name="line-504"></a> <span class="p">{</span>
+<a name="line-505"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasFixType</span><span class="p">())</span>
+<a name="line-506"></a> <span class="p">{</span>
+<a name="line-507"></a> <span class="k">return</span> <span class="n">QString</span><span class="p">();</span>
+<a name="line-508"></a> <span class="p">}</span>
<a name="line-509"></a>
-<a name="line-510"></a> <span class="n">albumModel</span><span class="p">.</span><span class="n">setShowCount</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-511"></a>
-<a name="line-512"></a> <span class="c1">// ensure that no album has a count attached</span>
-<a name="line-513"></a>
-<a name="line-514"></a> <span class="n">rootTitle</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">data</span><span class="p">(</span><span class="n">rootIndex</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">();</span>
-<a name="line-515"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="o">!</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">rootTitle</span><span class="p">));</span>
-<a name="line-516"></a>
-<a name="line-517"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">collectionRow</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">collectionRow</span> <span class="o">&lt;</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">rowCount</span><span class="p">(</span><span class="n">rootIndex</span><span class="p">);</span> <span class="o">++</span><span class="n">collectionRow</span><span class="p">)</span>
-<a name="line-518"></a> <span class="p">{</span>
-<a name="line-519"></a> <span class="n">QModelIndex</span> <span class="n">collectionIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">index</span><span class="p">(</span><span class="n">collectionRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">rootIndex</span><span class="p">);</span>
-<a name="line-520"></a> <span class="n">QString</span> <span class="n">collectionTitle</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">data</span><span class="p">(</span><span class="n">collectionIndex</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">();</span>
-<a name="line-521"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="o">!</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">collectionTitle</span><span class="p">),</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1 matching error&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">collectionTitle</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-522"></a>
-<a name="line-523"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">albumRow</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">albumRow</span> <span class="o">&lt;</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">rowCount</span><span class="p">(</span><span class="n">collectionIndex</span><span class="p">);</span> <span class="o">++</span><span class="n">albumRow</span><span class="p">)</span>
+<a name="line-510"></a> <span class="k">return</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;%1d&quot;</span><span class="p">,</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">getFixType</span><span class="p">());</span>
+<a name="line-511"></a> <span class="p">}</span>
+<a name="line-512"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnNSatellites</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
+<a name="line-513"></a> <span class="p">{</span>
+<a name="line-514"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">())</span>
+<a name="line-515"></a> <span class="p">{</span>
+<a name="line-516"></a> <span class="k">return</span> <span class="n">QString</span><span class="p">();</span>
+<a name="line-517"></a> <span class="p">}</span>
+<a name="line-518"></a>
+<a name="line-519"></a> <span class="k">return</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getNSatellites</span><span class="p">());</span>
+<a name="line-520"></a> <span class="p">}</span>
+<a name="line-521"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnSpeed</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
+<a name="line-522"></a> <span class="p">{</span>
+<a name="line-523"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasSpeed</span><span class="p">())</span>
<a name="line-524"></a> <span class="p">{</span>
-<a name="line-525"></a> <span class="n">QModelIndex</span> <span class="n">albumIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">index</span><span class="p">(</span><span class="n">albumRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">collectionIndex</span><span class="p">);</span>
-<a name="line-526"></a> <span class="n">QString</span> <span class="n">albumTitle</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">data</span><span class="p">(</span><span class="n">albumIndex</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">();</span>
-<a name="line-527"></a> <span class="n">QVERIFY2</span><span class="p">(</span><span class="o">!</span><span class="n">countRegEx</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">albumTitle</span><span class="p">),</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1 matching error&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">albumTitle</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-528"></a> <span class="p">}</span>
+<a name="line-525"></a> <span class="k">return</span> <span class="n">QString</span><span class="p">();</span>
+<a name="line-526"></a> <span class="p">}</span>
+<a name="line-527"></a>
+<a name="line-528"></a> <span class="k">return</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getSpeed</span><span class="p">());</span>
<a name="line-529"></a> <span class="p">}</span>
-<a name="line-530"></a><span class="p">}</span>
-<a name="line-531"></a>
-<a name="line-532"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">testDAlbumModel</span><span class="p">()</span>
-<a name="line-533"></a><span class="p">{</span>
-<a name="line-534"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start AlbumModelTest::testDAlbumModel()&quot;</span><span class="p">;</span>
-<a name="line-535"></a>
-<a name="line-536"></a> <span class="n">DateAlbumModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">albumModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DateAlbumModel</span><span class="p">();</span>
-<a name="line-537"></a> <span class="n">ensureItemCounts</span><span class="p">();</span>
-<a name="line-538"></a> <span class="n">ModelTest</span><span class="o">*</span> <span class="k">const</span> <span class="n">test</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModelTest</span><span class="p">(</span><span class="n">albumModel</span><span class="p">,</span> <span class="k">nullptr</span><span class="p">);</span>
-<a name="line-539"></a> <span class="k">delete</span> <span class="n">test</span><span class="p">;</span>
-<a name="line-540"></a> <span class="k">delete</span> <span class="n">albumModel</span><span class="p">;</span>
-<a name="line-541"></a><span class="p">}</span>
-<a name="line-542"></a>
-<a name="line-543"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">testDAlbumContainsAlbums</span><span class="p">()</span>
-<a name="line-544"></a><span class="p">{</span>
-<a name="line-545"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start AlbumModelTest::testDAlbumContainsAlbums()&quot;</span><span class="p">;</span>
-<a name="line-546"></a>
-<a name="line-547"></a> <span class="n">DateAlbumModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">albumModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DateAlbumModel</span><span class="p">();</span>
-<a name="line-548"></a> <span class="n">ensureItemCounts</span><span class="p">();</span>
+<a name="line-530"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnStatus</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
+<a name="line-531"></a> <span class="p">{</span>
+<a name="line-532"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_dirty</span> <span class="o">||</span> <span class="n">m_tagListDirty</span><span class="p">)</span>
+<a name="line-533"></a> <span class="p">{</span>
+<a name="line-534"></a> <span class="k">return</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Modified&quot;</span><span class="p">);</span>
+<a name="line-535"></a> <span class="p">}</span>
+<a name="line-536"></a>
+<a name="line-537"></a> <span class="k">return</span> <span class="n">QString</span><span class="p">();</span>
+<a name="line-538"></a> <span class="p">}</span>
+<a name="line-539"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnTags</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
+<a name="line-540"></a> <span class="p">{</span>
+<a name="line-541"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_tagList</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-542"></a> <span class="p">{</span>
+<a name="line-543"></a>
+<a name="line-544"></a> <span class="n">QString</span> <span class="n">myTagsList</span><span class="p">;</span>
+<a name="line-545"></a>
+<a name="line-546"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">m_tagList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-547"></a> <span class="p">{</span>
+<a name="line-548"></a> <span class="n">QString</span> <span class="n">myTag</span><span class="p">;</span>
<a name="line-549"></a>
-<a name="line-550"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rootAlbum</span><span class="p">());</span>
-<a name="line-551"></a>
-<a name="line-552"></a> <span class="n">foreach</span> <span class="p">(</span><span class="n">Album</span><span class="o">*</span> <span class="k">const</span> <span class="n">album</span><span class="p">,</span> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">allDAlbums</span><span class="p">())</span>
-<a name="line-553"></a> <span class="p">{</span>
-<a name="line-554"></a> <span class="n">DAlbum</span><span class="o">*</span> <span class="k">const</span> <span class="n">dAlbum</span> <span class="o">=</span> <span class="k">dynamic_cast</span><span class="o">&lt;</span><span class="n">DAlbum</span><span class="o">*&gt;</span> <span class="p">(</span><span class="n">album</span><span class="p">);</span>
-<a name="line-555"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">dAlbum</span><span class="p">);</span>
-<a name="line-556"></a>
-<a name="line-557"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;checking album for date &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;, range = &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">range</span><span class="p">();</span>
-<a name="line-558"></a>
-<a name="line-559"></a> <span class="n">QModelIndex</span> <span class="n">index</span> <span class="o">=</span> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">indexForAlbum</span><span class="p">(</span><span class="n">dAlbum</span><span class="p">);</span>
-<a name="line-560"></a>
-<a name="line-561"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">isRoot</span><span class="p">())</span>
-<a name="line-562"></a> <span class="p">{</span>
-<a name="line-563"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">index</span><span class="p">.</span><span class="n">isValid</span><span class="p">());</span>
-<a name="line-564"></a> <span class="p">}</span>
-<a name="line-565"></a>
-<a name="line-566"></a> <span class="k">if</span> <span class="p">(</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">isRoot</span><span class="p">())</span>
-<a name="line-567"></a> <span class="p">{</span>
-<a name="line-568"></a> <span class="c1">// root album</span>
-<a name="line-569"></a>
-<a name="line-570"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">isRoot</span><span class="p">());</span>
-<a name="line-571"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">index</span><span class="p">),</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-572"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rootAlbumIndex</span><span class="p">());</span>
-<a name="line-573"></a> <span class="p">}</span>
-<a name="line-574"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">range</span><span class="p">()</span> <span class="o">==</span> <span class="n">DAlbum</span><span class="o">::</span><span class="n">Year</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2007</span><span class="p">)</span>
-<a name="line-575"></a> <span class="p">{</span>
-<a name="line-576"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">index</span><span class="p">),</span> <span class="mi">2</span><span class="p">);</span>
-<a name="line-577"></a> <span class="p">}</span>
-<a name="line-578"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">range</span><span class="p">()</span> <span class="o">==</span> <span class="n">DAlbum</span><span class="o">::</span><span class="n">Year</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2009</span><span class="p">)</span>
-<a name="line-579"></a> <span class="p">{</span>
-<a name="line-580"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">index</span><span class="p">),</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-581"></a> <span class="p">}</span>
-<a name="line-582"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">range</span><span class="p">()</span> <span class="o">==</span> <span class="n">DAlbum</span><span class="o">::</span><span class="n">Month</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2007</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span>
-<a name="line-583"></a> <span class="p">{</span>
-<a name="line-584"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">index</span><span class="p">),</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-585"></a> <span class="p">}</span>
-<a name="line-586"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">range</span><span class="p">()</span> <span class="o">==</span> <span class="n">DAlbum</span><span class="o">::</span><span class="n">Month</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2007</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">==</span> <span class="mi">4</span><span class="p">)</span>
-<a name="line-587"></a> <span class="p">{</span>
-<a name="line-588"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">index</span><span class="p">),</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-589"></a> <span class="p">}</span>
-<a name="line-590"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">range</span><span class="p">()</span> <span class="o">==</span> <span class="n">DAlbum</span><span class="o">::</span><span class="n">Month</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2009</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span>
-<a name="line-591"></a> <span class="p">{</span>
-<a name="line-592"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">index</span><span class="p">),</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-593"></a> <span class="p">}</span>
-<a name="line-594"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">range</span><span class="p">()</span> <span class="o">==</span> <span class="n">DAlbum</span><span class="o">::</span><span class="n">Month</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2009</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">==</span> <span class="mi">4</span><span class="p">)</span>
-<a name="line-595"></a> <span class="p">{</span>
-<a name="line-596"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">index</span><span class="p">),</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-597"></a> <span class="p">}</span>
-<a name="line-598"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">range</span><span class="p">()</span> <span class="o">==</span> <span class="n">DAlbum</span><span class="o">::</span><span class="n">Month</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2009</span> <span class="o">&amp;&amp;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">==</span> <span class="mi">5</span><span class="p">)</span>
-<a name="line-599"></a> <span class="p">{</span>
-<a name="line-600"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">index</span><span class="p">),</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-601"></a> <span class="p">}</span>
-<a name="line-602"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">1997</span><span class="p">)</span>
-<a name="line-603"></a> <span class="p">{</span>
-<a name="line-604"></a> <span class="c1">// Ignore these albums for order testing</span>
-<a name="line-605"></a> <span class="p">}</span>
-<a name="line-606"></a> <span class="k">else</span>
-<a name="line-607"></a> <span class="p">{</span>
-<a name="line-608"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Unexpected album: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">dAlbum</span><span class="o">-&gt;</span><span class="n">title</span><span class="p">();</span>
-<a name="line-609"></a> <span class="n">QFAIL</span><span class="p">(</span><span class="s">&quot;Unexpected album returned from model&quot;</span><span class="p">);</span>
-<a name="line-610"></a> <span class="p">}</span>
-<a name="line-611"></a> <span class="p">}</span>
-<a name="line-612"></a>
-<a name="line-613"></a> <span class="k">delete</span> <span class="n">albumModel</span><span class="p">;</span>
+<a name="line-550"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">j</span> <span class="o">&lt;</span> <span class="n">m_tagList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span>
+<a name="line-551"></a> <span class="p">{</span>
+<a name="line-552"></a> <span class="n">myTag</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">m_tagList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">at</span><span class="p">(</span><span class="n">j</span><span class="p">).</span><span class="n">tagName</span><span class="p">);</span>
+<a name="line-553"></a>
+<a name="line-554"></a> <span class="k">if</span> <span class="p">(</span><span class="n">j</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-555"></a> <span class="p">{</span>
+<a name="line-556"></a> <span class="n">myTag</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-557"></a> <span class="p">}</span>
+<a name="line-558"></a> <span class="p">}</span>
+<a name="line-559"></a>
+<a name="line-560"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">myTagsList</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-561"></a> <span class="p">{</span>
+<a name="line-562"></a> <span class="n">myTagsList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;, &quot;</span><span class="p">));</span>
+<a name="line-563"></a> <span class="p">}</span>
+<a name="line-564"></a>
+<a name="line-565"></a> <span class="n">myTagsList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">myTag</span><span class="p">);</span>
+<a name="line-566"></a> <span class="p">}</span>
+<a name="line-567"></a>
+<a name="line-568"></a> <span class="k">return</span> <span class="n">myTagsList</span><span class="p">;</span>
+<a name="line-569"></a> <span class="p">}</span>
+<a name="line-570"></a>
+<a name="line-571"></a> <span class="k">return</span> <span class="n">QString</span><span class="p">();</span>
+<a name="line-572"></a> <span class="p">}</span>
+<a name="line-573"></a>
+<a name="line-574"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="p">();</span>
+<a name="line-575"></a><span class="p">}</span>
+<a name="line-576"></a>
+<a name="line-577"></a><span class="kt">void</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">setCoordinates</span><span class="p">(</span><span class="k">const</span> <span class="n">GeoCoordinates</span><span class="o">&amp;</span> <span class="n">newCoordinates</span><span class="p">)</span>
+<a name="line-578"></a><span class="p">{</span>
+<a name="line-579"></a> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">setCoordinates</span><span class="p">(</span><span class="n">newCoordinates</span><span class="p">);</span>
+<a name="line-580"></a> <span class="n">m_dirty</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-581"></a>
+<a name="line-582"></a> <span class="n">emitDataChanged</span><span class="p">();</span>
+<a name="line-583"></a><span class="p">}</span>
+<a name="line-584"></a>
+<a name="line-585"></a><span class="kt">void</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">setModel</span><span class="p">(</span><span class="n">GPSItemModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">model</span><span class="p">)</span>
+<a name="line-586"></a><span class="p">{</span>
+<a name="line-587"></a> <span class="n">m_model</span> <span class="o">=</span> <span class="n">model</span><span class="p">;</span>
+<a name="line-588"></a><span class="p">}</span>
+<a name="line-589"></a>
+<a name="line-590"></a><span class="kt">void</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">emitDataChanged</span><span class="p">()</span>
+<a name="line-591"></a><span class="p">{</span>
+<a name="line-592"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_model</span><span class="p">)</span>
+<a name="line-593"></a> <span class="p">{</span>
+<a name="line-594"></a> <span class="n">m_model</span><span class="o">-&gt;</span><span class="n">itemChanged</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
+<a name="line-595"></a> <span class="p">}</span>
+<a name="line-596"></a><span class="p">}</span>
+<a name="line-597"></a>
+<a name="line-598"></a><span class="kt">void</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">GPSItemModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">model</span><span class="p">)</span>
+<a name="line-599"></a><span class="p">{</span>
+<a name="line-600"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setColumnCount</span><span class="p">(</span><span class="n">ColumnGPSItemContainerCount</span><span class="p">);</span>
+<a name="line-601"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnThumbnail</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Thumbnail&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
+<a name="line-602"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnFilename</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Filename&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
+<a name="line-603"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnDateTime</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Date and time&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
+<a name="line-604"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnLatitude</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Latitude&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
+<a name="line-605"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnLongitude</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Longitude&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
+<a name="line-606"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnAltitude</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Altitude&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
+<a name="line-607"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnAccuracy</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Accuracy&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
+<a name="line-608"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnDOP</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;DOP&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
+<a name="line-609"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnFixType</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Fix type&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
+<a name="line-610"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnNSatellites</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;# satellites&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
+<a name="line-611"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnSpeed</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Speed&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
+<a name="line-612"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnStatus</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Status&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
+<a name="line-613"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnTags</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Tags&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
<a name="line-614"></a><span class="p">}</span>
<a name="line-615"></a>
-<a name="line-616"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">testDAlbumSorting</span><span class="p">()</span>
+<a name="line-616"></a><span class="kt">bool</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">lessThan</span><span class="p">(</span><span class="k">const</span> <span class="n">GPSItemContainer</span><span class="o">*</span> <span class="k">const</span> <span class="n">otherItem</span><span class="p">,</span> <span class="k">const</span> <span class="kt">int</span> <span class="n">column</span><span class="p">)</span> <span class="k">const</span>
<a name="line-617"></a><span class="p">{</span>
-<a name="line-618"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start AlbumModelTest::testDAlbumSorting()&quot;</span><span class="p">;</span>
-<a name="line-619"></a>
-<a name="line-620"></a> <span class="n">DateAlbumModel</span> <span class="n">dateAlbumModel</span><span class="p">;</span>
-<a name="line-621"></a> <span class="n">AlbumFilterModel</span> <span class="n">albumModel</span><span class="p">;</span>
-<a name="line-622"></a> <span class="n">albumModel</span><span class="p">.</span><span class="n">setSourceAlbumModel</span><span class="p">(</span><span class="o">&amp;</span><span class="n">dateAlbumModel</span><span class="p">);</span>
-<a name="line-623"></a>
-<a name="line-624"></a> <span class="c1">// first check ascending order</span>
+<a name="line-618"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">column</span><span class="p">)</span>
+<a name="line-619"></a> <span class="p">{</span>
+<a name="line-620"></a> <span class="k">case</span> <span class="nl">ColumnThumbnail</span><span class="p">:</span>
+<a name="line-621"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-622"></a>
+<a name="line-623"></a> <span class="k">case</span> <span class="nl">ColumnFilename</span><span class="p">:</span>
+<a name="line-624"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_url</span> <span class="o">&lt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_url</span><span class="p">);</span>
<a name="line-625"></a>
-<a name="line-626"></a> <span class="n">albumModel</span><span class="p">.</span><span class="n">sort</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AscendingOrder</span><span class="p">);</span>
-<a name="line-627"></a> <span class="kt">int</span> <span class="n">previousYear</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-626"></a> <span class="k">case</span> <span class="nl">ColumnDateTime</span><span class="p">:</span>
+<a name="line-627"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_dateTime</span> <span class="o">&lt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_dateTime</span><span class="p">);</span>
<a name="line-628"></a>
-<a name="line-629"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">yearRow</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">yearRow</span> <span class="o">&lt;</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">rowCount</span><span class="p">();</span> <span class="o">++</span><span class="n">yearRow</span><span class="p">)</span>
-<a name="line-630"></a> <span class="p">{</span>
-<a name="line-631"></a> <span class="n">QModelIndex</span> <span class="n">yearIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">index</span><span class="p">(</span><span class="n">yearRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-632"></a> <span class="n">DAlbum</span><span class="o">*</span> <span class="k">const</span> <span class="n">yearAlbum</span> <span class="o">=</span> <span class="k">dynamic_cast</span><span class="o">&lt;</span><span class="n">DAlbum</span><span class="o">*&gt;</span> <span class="p">(</span><span class="n">albumModel</span><span class="p">.</span><span class="n">albumForIndex</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">));</span>
-<a name="line-633"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">yearAlbum</span><span class="p">);</span>
-<a name="line-634"></a>
-<a name="line-635"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">yearAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">previousYear</span><span class="p">);</span>
-<a name="line-636"></a> <span class="n">previousYear</span> <span class="o">=</span> <span class="n">yearAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">();</span>
-<a name="line-637"></a>
-<a name="line-638"></a> <span class="kt">int</span> <span class="n">previousMonth</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-639"></a>
-<a name="line-640"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">monthRow</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">monthRow</span> <span class="o">&lt;</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">rowCount</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">);</span> <span class="o">++</span><span class="n">monthRow</span><span class="p">)</span>
-<a name="line-641"></a> <span class="p">{</span>
-<a name="line-642"></a> <span class="n">QModelIndex</span> <span class="n">monthIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">index</span><span class="p">(</span><span class="n">monthRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">yearIndex</span><span class="p">);</span>
-<a name="line-643"></a> <span class="n">DAlbum</span><span class="o">*</span> <span class="k">const</span> <span class="n">monthAlbum</span> <span class="o">=</span> <span class="k">dynamic_cast</span><span class="o">&lt;</span><span class="n">DAlbum</span><span class="o">*&gt;</span> <span class="p">(</span><span class="n">albumModel</span><span class="p">.</span><span class="n">albumForIndex</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">));</span>
-<a name="line-644"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthAlbum</span><span class="p">);</span>
-<a name="line-645"></a>
-<a name="line-646"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">previousMonth</span><span class="p">);</span>
-<a name="line-647"></a> <span class="n">previousMonth</span> <span class="o">=</span> <span class="n">monthAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">();</span>
-<a name="line-648"></a> <span class="p">}</span>
-<a name="line-649"></a> <span class="p">}</span>
+<a name="line-629"></a> <span class="k">case</span> <span class="nl">ColumnAltitude</span><span class="p">:</span>
+<a name="line-630"></a> <span class="p">{</span>
+<a name="line-631"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasAltitude</span><span class="p">())</span>
+<a name="line-632"></a> <span class="p">{</span>
+<a name="line-633"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-634"></a> <span class="p">}</span>
+<a name="line-635"></a>
+<a name="line-636"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasAltitude</span><span class="p">())</span>
+<a name="line-637"></a> <span class="p">{</span>
+<a name="line-638"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-639"></a> <span class="p">}</span>
+<a name="line-640"></a>
+<a name="line-641"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">alt</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">alt</span><span class="p">());</span>
+<a name="line-642"></a> <span class="p">}</span>
+<a name="line-643"></a>
+<a name="line-644"></a> <span class="k">case</span> <span class="nl">ColumnNSatellites</span><span class="p">:</span>
+<a name="line-645"></a> <span class="p">{</span>
+<a name="line-646"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">())</span>
+<a name="line-647"></a> <span class="p">{</span>
+<a name="line-648"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-649"></a> <span class="p">}</span>
<a name="line-650"></a>
-<a name="line-651"></a> <span class="c1">// then check descending order</span>
-<a name="line-652"></a>
-<a name="line-653"></a> <span class="n">albumModel</span><span class="p">.</span><span class="n">sort</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DescendingOrder</span><span class="p">);</span>
-<a name="line-654"></a> <span class="n">previousYear</span> <span class="o">=</span> <span class="mi">1000000</span><span class="p">;</span>
+<a name="line-651"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">())</span>
+<a name="line-652"></a> <span class="p">{</span>
+<a name="line-653"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-654"></a> <span class="p">}</span>
<a name="line-655"></a>
-<a name="line-656"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">yearRow</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">yearRow</span> <span class="o">&lt;</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">rowCount</span><span class="p">();</span> <span class="o">++</span><span class="n">yearRow</span><span class="p">)</span>
-<a name="line-657"></a> <span class="p">{</span>
-<a name="line-658"></a> <span class="n">QModelIndex</span> <span class="n">yearIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">index</span><span class="p">(</span><span class="n">yearRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-659"></a> <span class="n">DAlbum</span><span class="o">*</span> <span class="k">const</span> <span class="n">yearAlbum</span> <span class="o">=</span> <span class="k">dynamic_cast</span><span class="o">&lt;</span><span class="n">DAlbum</span><span class="o">*&gt;</span> <span class="p">(</span><span class="n">albumModel</span><span class="p">.</span><span class="n">albumForIndex</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">));</span>
-<a name="line-660"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">yearAlbum</span><span class="p">);</span>
-<a name="line-661"></a>
-<a name="line-662"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">yearAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">previousYear</span><span class="p">);</span>
-<a name="line-663"></a> <span class="n">previousYear</span> <span class="o">=</span> <span class="n">yearAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">();</span>
-<a name="line-664"></a>
-<a name="line-665"></a> <span class="kt">int</span> <span class="n">previousMonth</span> <span class="o">=</span> <span class="mi">13</span><span class="p">;</span>
-<a name="line-666"></a>
-<a name="line-667"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">monthRow</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">monthRow</span> <span class="o">&lt;</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">rowCount</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">);</span> <span class="o">++</span><span class="n">monthRow</span><span class="p">)</span>
-<a name="line-668"></a> <span class="p">{</span>
-<a name="line-669"></a> <span class="n">QModelIndex</span> <span class="n">monthIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="p">.</span><span class="n">index</span><span class="p">(</span><span class="n">monthRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">yearIndex</span><span class="p">);</span>
-<a name="line-670"></a> <span class="n">DAlbum</span><span class="o">*</span> <span class="k">const</span> <span class="n">monthAlbum</span> <span class="o">=</span> <span class="k">dynamic_cast</span><span class="o">&lt;</span><span class="n">DAlbum</span><span class="o">*&gt;</span> <span class="p">(</span><span class="n">albumModel</span><span class="p">.</span><span class="n">albumForIndex</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">));</span>
-<a name="line-671"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthAlbum</span><span class="p">);</span>
-<a name="line-672"></a>
-<a name="line-673"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">previousMonth</span><span class="p">);</span>
-<a name="line-674"></a> <span class="n">previousMonth</span> <span class="o">=</span> <span class="n">monthAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">();</span>
-<a name="line-675"></a> <span class="p">}</span>
-<a name="line-676"></a> <span class="p">}</span>
-<a name="line-677"></a><span class="p">}</span>
+<a name="line-656"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getNSatellites</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getNSatellites</span><span class="p">());</span>
+<a name="line-657"></a> <span class="p">}</span>
+<a name="line-658"></a>
+<a name="line-659"></a> <span class="k">case</span> <span class="nl">ColumnAccuracy</span><span class="p">:</span>
+<a name="line-660"></a> <span class="p">{</span>
+<a name="line-661"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">myWarning</span> <span class="o">=</span> <span class="n">getWarningLevelFromGPSDataContainer</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">);</span>
+<a name="line-662"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">otherWarning</span> <span class="o">=</span> <span class="n">getWarningLevelFromGPSDataContainer</span><span class="p">(</span><span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">);</span>
+<a name="line-663"></a>
+<a name="line-664"></a> <span class="k">if</span> <span class="p">(</span><span class="n">myWarning</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-665"></a> <span class="p">{</span>
+<a name="line-666"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-667"></a> <span class="p">}</span>
+<a name="line-668"></a>
+<a name="line-669"></a> <span class="k">if</span> <span class="p">(</span><span class="n">otherWarning</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-670"></a> <span class="p">{</span>
+<a name="line-671"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-672"></a> <span class="p">}</span>
+<a name="line-673"></a>
+<a name="line-674"></a> <span class="k">if</span> <span class="p">(</span><span class="n">myWarning</span> <span class="o">!=</span> <span class="n">otherWarning</span><span class="p">)</span>
+<a name="line-675"></a> <span class="p">{</span>
+<a name="line-676"></a> <span class="k">return</span> <span class="p">(</span><span class="n">myWarning</span> <span class="o">&lt;</span> <span class="n">otherWarning</span><span class="p">);</span>
+<a name="line-677"></a> <span class="p">}</span>
<a name="line-678"></a>
-<a name="line-679"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">testDAlbumCount</span><span class="p">()</span>
-<a name="line-680"></a><span class="p">{</span>
-<a name="line-681"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start AlbumModelTest::testDAlbumCount()&quot;</span><span class="p">;</span>
-<a name="line-682"></a>
-<a name="line-683"></a> <span class="n">DateAlbumModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">albumModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DateAlbumModel</span><span class="p">();</span>
-<a name="line-684"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">setShowCount</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-685"></a> <span class="n">ensureItemCounts</span><span class="p">();</span>
+<a name="line-679"></a> <span class="c1">// TODO: this may not be the best way to sort images with equal warning levels</span>
+<a name="line-680"></a> <span class="c1">// but it works for now</span>
+<a name="line-681"></a>
+<a name="line-682"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasDop</span><span class="p">()</span> <span class="o">!=</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasDop</span><span class="p">())</span>
+<a name="line-683"></a> <span class="p">{</span>
+<a name="line-684"></a> <span class="k">return</span> <span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasDop</span><span class="p">();</span>
+<a name="line-685"></a> <span class="p">}</span>
<a name="line-686"></a>
-<a name="line-687"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;iterating over root indices&quot;</span><span class="p">;</span>
-<a name="line-688"></a>
-<a name="line-689"></a> <span class="c1">// check year albums</span>
-<a name="line-690"></a>
-<a name="line-691"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">yearRow</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">yearRow</span> <span class="o">&lt;</span> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rootAlbumIndex</span><span class="p">());</span> <span class="o">++</span><span class="n">yearRow</span><span class="p">)</span>
-<a name="line-692"></a> <span class="p">{</span>
-<a name="line-693"></a> <span class="n">QModelIndex</span> <span class="n">yearIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">yearRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-694"></a> <span class="n">DAlbum</span><span class="o">*</span> <span class="k">const</span> <span class="n">yearDAlbum</span> <span class="o">=</span> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumForIndex</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">);</span>
-<a name="line-695"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">yearDAlbum</span><span class="p">);</span>
+<a name="line-687"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasDop</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasDop</span><span class="p">())</span>
+<a name="line-688"></a> <span class="p">{</span>
+<a name="line-689"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getDop</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getDop</span><span class="p">());</span>
+<a name="line-690"></a> <span class="p">}</span>
+<a name="line-691"></a>
+<a name="line-692"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasFixType</span><span class="p">()</span> <span class="o">!=</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasFixType</span><span class="p">())</span>
+<a name="line-693"></a> <span class="p">{</span>
+<a name="line-694"></a> <span class="k">return</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasFixType</span><span class="p">();</span>
+<a name="line-695"></a> <span class="p">}</span>
<a name="line-696"></a>
-<a name="line-697"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">yearDAlbum</span><span class="o">-&gt;</span><span class="n">range</span><span class="p">()</span> <span class="o">==</span> <span class="n">DAlbum</span><span class="o">::</span><span class="n">Year</span><span class="p">);</span>
-<a name="line-698"></a>
-<a name="line-699"></a> <span class="k">if</span> <span class="p">(</span><span class="n">yearDAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2007</span><span class="p">)</span>
-<a name="line-700"></a> <span class="p">{</span>
-<a name="line-701"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">imagesInYear</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
-<a name="line-702"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">);</span>
-<a name="line-703"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">yearDAlbum</span><span class="p">),</span> <span class="n">imagesInYear</span><span class="p">);</span>
-<a name="line-704"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">excludeChildrenCount</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">);</span>
-<a name="line-705"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">yearDAlbum</span><span class="p">),</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-706"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">);</span>
-<a name="line-707"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">yearDAlbum</span><span class="p">),</span> <span class="n">imagesInYear</span><span class="p">);</span>
-<a name="line-708"></a>
-<a name="line-709"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">monthRow</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">monthRow</span> <span class="o">&lt;</span> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">);</span> <span class="o">++</span><span class="n">monthRow</span><span class="p">)</span>
-<a name="line-710"></a> <span class="p">{</span>
-<a name="line-711"></a> <span class="n">QModelIndex</span> <span class="n">monthIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">monthRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">yearIndex</span><span class="p">);</span>
-<a name="line-712"></a> <span class="n">DAlbum</span><span class="o">*</span> <span class="n">monthDAlbum</span> <span class="o">=</span> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumForIndex</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
-<a name="line-713"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">);</span>
+<a name="line-697"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasFixType</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasFixType</span><span class="p">())</span>
+<a name="line-698"></a> <span class="p">{</span>
+<a name="line-699"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getFixType</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getFixType</span><span class="p">());</span>
+<a name="line-700"></a> <span class="p">}</span>
+<a name="line-701"></a>
+<a name="line-702"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">()</span> <span class="o">!=</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">())</span>
+<a name="line-703"></a> <span class="p">{</span>
+<a name="line-704"></a> <span class="k">return</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">();</span>
+<a name="line-705"></a> <span class="p">}</span>
+<a name="line-706"></a>
+<a name="line-707"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">())</span>
+<a name="line-708"></a> <span class="p">{</span>
+<a name="line-709"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getNSatellites</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getNSatellites</span><span class="p">());</span>
+<a name="line-710"></a> <span class="p">}</span>
+<a name="line-711"></a>
+<a name="line-712"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-713"></a> <span class="p">}</span>
<a name="line-714"></a>
-<a name="line-715"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="o">-&gt;</span><span class="n">range</span><span class="p">()</span> <span class="o">==</span> <span class="n">DAlbum</span><span class="o">::</span><span class="n">Month</span><span class="p">);</span>
-<a name="line-716"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2007</span><span class="p">);</span>
-<a name="line-717"></a>
-<a name="line-718"></a> <span class="k">if</span> <span class="p">(</span><span class="n">monthDAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span>
-<a name="line-719"></a> <span class="p">{</span>
-<a name="line-720"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">imagesInMonth</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
-<a name="line-721"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
-<a name="line-722"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
-<a name="line-723"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">excludeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
-<a name="line-724"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
-<a name="line-725"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
-<a name="line-726"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
-<a name="line-727"></a> <span class="p">}</span>
-<a name="line-728"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">monthDAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">==</span> <span class="mi">4</span><span class="p">)</span>
-<a name="line-729"></a> <span class="p">{</span>
-<a name="line-730"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">imagesInMonth</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
-<a name="line-731"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
-<a name="line-732"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
-<a name="line-733"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">excludeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
-<a name="line-734"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
-<a name="line-735"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
-<a name="line-736"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
-<a name="line-737"></a> <span class="p">}</span>
-<a name="line-738"></a> <span class="k">else</span>
-<a name="line-739"></a> <span class="p">{</span>
-<a name="line-740"></a> <span class="n">QFAIL</span><span class="p">(</span><span class="s">&quot;unexpected month album in 2007&quot;</span><span class="p">);</span>
-<a name="line-741"></a> <span class="p">}</span>
-<a name="line-742"></a> <span class="p">}</span>
+<a name="line-715"></a> <span class="k">case</span> <span class="nl">ColumnDOP</span><span class="p">:</span>
+<a name="line-716"></a> <span class="p">{</span>
+<a name="line-717"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasDop</span><span class="p">())</span>
+<a name="line-718"></a> <span class="p">{</span>
+<a name="line-719"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-720"></a> <span class="p">}</span>
+<a name="line-721"></a>
+<a name="line-722"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasDop</span><span class="p">())</span>
+<a name="line-723"></a> <span class="p">{</span>
+<a name="line-724"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-725"></a> <span class="p">}</span>
+<a name="line-726"></a>
+<a name="line-727"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getDop</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getDop</span><span class="p">());</span>
+<a name="line-728"></a> <span class="p">}</span>
+<a name="line-729"></a>
+<a name="line-730"></a> <span class="k">case</span> <span class="nl">ColumnFixType</span><span class="p">:</span>
+<a name="line-731"></a> <span class="p">{</span>
+<a name="line-732"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasFixType</span><span class="p">())</span>
+<a name="line-733"></a> <span class="p">{</span>
+<a name="line-734"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-735"></a> <span class="p">}</span>
+<a name="line-736"></a>
+<a name="line-737"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasFixType</span><span class="p">())</span>
+<a name="line-738"></a> <span class="p">{</span>
+<a name="line-739"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-740"></a> <span class="p">}</span>
+<a name="line-741"></a>
+<a name="line-742"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getFixType</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getFixType</span><span class="p">());</span>
<a name="line-743"></a> <span class="p">}</span>
-<a name="line-744"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">yearDAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2009</span><span class="p">)</span>
-<a name="line-745"></a> <span class="p">{</span>
-<a name="line-746"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">imagesInYear</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
-<a name="line-747"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">);</span>
-<a name="line-748"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">yearDAlbum</span><span class="p">),</span> <span class="n">imagesInYear</span><span class="p">);</span>
-<a name="line-749"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">excludeChildrenCount</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">);</span>
-<a name="line-750"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">yearDAlbum</span><span class="p">),</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-751"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">);</span>
-<a name="line-752"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">yearDAlbum</span><span class="p">),</span> <span class="n">imagesInYear</span><span class="p">);</span>
-<a name="line-753"></a>
-<a name="line-754"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">monthRow</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">monthRow</span> <span class="o">&lt;</span> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">yearIndex</span><span class="p">);</span> <span class="o">++</span><span class="n">monthRow</span><span class="p">)</span>
-<a name="line-755"></a> <span class="p">{</span>
-<a name="line-756"></a> <span class="n">QModelIndex</span> <span class="n">monthIndex</span> <span class="o">=</span> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">monthRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">yearIndex</span><span class="p">);</span>
-<a name="line-757"></a> <span class="n">DAlbum</span><span class="o">*</span> <span class="n">monthDAlbum</span> <span class="o">=</span> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumForIndex</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
-<a name="line-758"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">);</span>
+<a name="line-744"></a>
+<a name="line-745"></a> <span class="k">case</span> <span class="nl">ColumnSpeed</span><span class="p">:</span>
+<a name="line-746"></a> <span class="p">{</span>
+<a name="line-747"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasSpeed</span><span class="p">())</span>
+<a name="line-748"></a> <span class="p">{</span>
+<a name="line-749"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-750"></a> <span class="p">}</span>
+<a name="line-751"></a>
+<a name="line-752"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasSpeed</span><span class="p">())</span>
+<a name="line-753"></a> <span class="p">{</span>
+<a name="line-754"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-755"></a> <span class="p">}</span>
+<a name="line-756"></a>
+<a name="line-757"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getSpeed</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getSpeed</span><span class="p">());</span>
+<a name="line-758"></a> <span class="p">}</span>
<a name="line-759"></a>
-<a name="line-760"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="o">-&gt;</span><span class="n">range</span><span class="p">()</span> <span class="o">==</span> <span class="n">DAlbum</span><span class="o">::</span><span class="n">Month</span><span class="p">);</span>
-<a name="line-761"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">2009</span><span class="p">);</span>
-<a name="line-762"></a>
-<a name="line-763"></a> <span class="k">if</span> <span class="p">(</span><span class="n">monthDAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span>
-<a name="line-764"></a> <span class="p">{</span>
-<a name="line-765"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">imagesInMonth</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
-<a name="line-766"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
-<a name="line-767"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
-<a name="line-768"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">excludeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
-<a name="line-769"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
-<a name="line-770"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
-<a name="line-771"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
-<a name="line-772"></a> <span class="p">}</span>
-<a name="line-773"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">monthDAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">==</span> <span class="mi">4</span><span class="p">)</span>
-<a name="line-774"></a> <span class="p">{</span>
-<a name="line-775"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">imagesInMonth</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
-<a name="line-776"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
-<a name="line-777"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
-<a name="line-778"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">excludeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
-<a name="line-779"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
-<a name="line-780"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
-<a name="line-781"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
-<a name="line-782"></a> <span class="p">}</span>
-<a name="line-783"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">monthDAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">month</span><span class="p">()</span> <span class="o">==</span> <span class="mi">5</span><span class="p">)</span>
-<a name="line-784"></a> <span class="p">{</span>
-<a name="line-785"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">imagesInMonth</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-786"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
-<a name="line-787"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
-<a name="line-788"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">excludeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
-<a name="line-789"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
-<a name="line-790"></a> <span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">includeChildrenCount</span><span class="p">(</span><span class="n">monthIndex</span><span class="p">);</span>
-<a name="line-791"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">albumModel</span><span class="o">-&gt;</span><span class="n">albumCount</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">),</span> <span class="n">imagesInMonth</span><span class="p">);</span>
-<a name="line-792"></a> <span class="p">}</span>
-<a name="line-793"></a> <span class="k">else</span>
-<a name="line-794"></a> <span class="p">{</span>
-<a name="line-795"></a> <span class="n">QFAIL</span><span class="p">(</span><span class="s">&quot;unexpected month album in 2009&quot;</span><span class="p">);</span>
-<a name="line-796"></a> <span class="p">}</span>
-<a name="line-797"></a> <span class="p">}</span>
+<a name="line-760"></a> <span class="k">case</span> <span class="nl">ColumnLatitude</span><span class="p">:</span>
+<a name="line-761"></a> <span class="p">{</span>
+<a name="line-762"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasCoordinates</span><span class="p">())</span>
+<a name="line-763"></a> <span class="p">{</span>
+<a name="line-764"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-765"></a> <span class="p">}</span>
+<a name="line-766"></a>
+<a name="line-767"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasCoordinates</span><span class="p">())</span>
+<a name="line-768"></a> <span class="p">{</span>
+<a name="line-769"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-770"></a> <span class="p">}</span>
+<a name="line-771"></a>
+<a name="line-772"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">lat</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">lat</span><span class="p">());</span>
+<a name="line-773"></a> <span class="p">}</span>
+<a name="line-774"></a>
+<a name="line-775"></a> <span class="k">case</span> <span class="nl">ColumnLongitude</span><span class="p">:</span>
+<a name="line-776"></a> <span class="p">{</span>
+<a name="line-777"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasCoordinates</span><span class="p">())</span>
+<a name="line-778"></a> <span class="p">{</span>
+<a name="line-779"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-780"></a> <span class="p">}</span>
+<a name="line-781"></a>
+<a name="line-782"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasCoordinates</span><span class="p">())</span>
+<a name="line-783"></a> <span class="p">{</span>
+<a name="line-784"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-785"></a> <span class="p">}</span>
+<a name="line-786"></a>
+<a name="line-787"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">lon</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">lon</span><span class="p">());</span>
+<a name="line-788"></a> <span class="p">}</span>
+<a name="line-789"></a>
+<a name="line-790"></a> <span class="k">case</span> <span class="nl">ColumnStatus</span><span class="p">:</span>
+<a name="line-791"></a> <span class="p">{</span>
+<a name="line-792"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_dirty</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_dirty</span><span class="p">);</span>
+<a name="line-793"></a> <span class="p">}</span>
+<a name="line-794"></a>
+<a name="line-795"></a> <span class="k">default</span><span class="o">:</span>
+<a name="line-796"></a> <span class="p">{</span>
+<a name="line-797"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-798"></a> <span class="p">}</span>
-<a name="line-799"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">yearDAlbum</span><span class="o">-&gt;</span><span class="n">date</span><span class="p">().</span><span class="n">year</span><span class="p">()</span> <span class="o">==</span> <span class="mi">1997</span><span class="p">)</span>
-<a name="line-800"></a> <span class="p">{</span>
-<a name="line-801"></a> <span class="c1">// Nothing to do here, ignore the albums for ordering tests</span>
-<a name="line-802"></a> <span class="p">}</span>
-<a name="line-803"></a> <span class="k">else</span>
-<a name="line-804"></a> <span class="p">{</span>
-<a name="line-805"></a> <span class="n">QFAIL</span><span class="p">(</span><span class="s">&quot;Received unexpected album from model&quot;</span><span class="p">);</span>
-<a name="line-806"></a> <span class="p">}</span>
-<a name="line-807"></a> <span class="p">}</span>
-<a name="line-808"></a>
-<a name="line-809"></a> <span class="k">delete</span> <span class="n">albumModel</span><span class="p">;</span>
-<a name="line-810"></a><span class="p">}</span>
-<a name="line-811"></a>
-<a name="line-812"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">testTAlbumModel</span><span class="p">()</span>
-<a name="line-813"></a><span class="p">{</span>
-<a name="line-814"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start AlbumModelTest::testTAlbumModel()&quot;</span><span class="p">;</span>
-<a name="line-815"></a>
-<a name="line-816"></a> <span class="n">TagModel</span><span class="o">*</span> <span class="n">albumModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TagModel</span><span class="p">();</span>
-<a name="line-817"></a> <span class="n">ModelTest</span><span class="o">*</span> <span class="n">test</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModelTest</span><span class="p">(</span><span class="n">albumModel</span><span class="p">,</span> <span class="k">nullptr</span><span class="p">);</span>
-<a name="line-818"></a> <span class="k">delete</span> <span class="n">test</span><span class="p">;</span>
-<a name="line-819"></a> <span class="k">delete</span> <span class="n">albumModel</span><span class="p">;</span>
-<a name="line-820"></a>
-<a name="line-821"></a> <span class="n">albumModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TagModel</span><span class="p">(</span><span class="n">AbstractAlbumModel</span><span class="o">::</span><span class="n">IgnoreRootAlbum</span><span class="p">);</span>
-<a name="line-822"></a> <span class="n">test</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModelTest</span><span class="p">(</span><span class="n">albumModel</span><span class="p">,</span> <span class="k">nullptr</span><span class="p">);</span>
-<a name="line-823"></a> <span class="k">delete</span> <span class="n">test</span><span class="p">;</span>
-<a name="line-824"></a> <span class="k">delete</span> <span class="n">albumModel</span><span class="p">;</span>
-<a name="line-825"></a><span class="p">}</span>
-<a name="line-826"></a>
-<a name="line-827"></a><span class="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">testSAlbumModel</span><span class="p">()</span>
-<a name="line-828"></a><span class="p">{</span>
-<a name="line-829"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start AlbumModelTest::testSAlbumModel()&quot;</span><span class="p">;</span>
-<a name="line-830"></a>
-<a name="line-831"></a> <span class="n">SearchModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">albumModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SearchModel</span><span class="p">();</span>
-<a name="line-832"></a> <span class="n">ModelTest</span><span class="o">*</span> <span class="k">const</span> <span class="n">test</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ModelTest</span><span class="p">(</span><span class="n">albumModel</span><span class="p">,</span> <span class="k">nullptr</span><span class="p">);</span>
-<a name="line-833"></a> <span class="k">delete</span> <span class="n">test</span><span class="p">;</span>
-<a name="line-834"></a> <span class="k">delete</span> <span class="n">albumModel</span><span class="p">;</span>
-<a name="line-835"></a><span class="p">}</span>
+<a name="line-799"></a> <span class="p">}</span>
+<a name="line-800"></a><span class="p">}</span>
+<a name="line-801"></a>
+<a name="line-802"></a><span class="n">SaveProperties</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">saveProperties</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-803"></a><span class="p">{</span>
+<a name="line-804"></a> <span class="n">SaveProperties</span> <span class="n">p</span><span class="p">;</span>
+<a name="line-805"></a>
+<a name="line-806"></a> <span class="c1">// do we have gps information?</span>
+<a name="line-807"></a>
+<a name="line-808"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasCoordinates</span><span class="p">())</span>
+<a name="line-809"></a> <span class="p">{</span>
+<a name="line-810"></a> <span class="n">p</span><span class="p">.</span><span class="n">shouldWriteCoordinates</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-811"></a> <span class="n">p</span><span class="p">.</span><span class="n">latitude</span> <span class="o">=</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">lat</span><span class="p">();</span>
+<a name="line-812"></a> <span class="n">p</span><span class="p">.</span><span class="n">longitude</span> <span class="o">=</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">lon</span><span class="p">();</span>
+<a name="line-813"></a>
+<a name="line-814"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasAltitude</span><span class="p">())</span>
+<a name="line-815"></a> <span class="p">{</span>
+<a name="line-816"></a> <span class="n">p</span><span class="p">.</span><span class="n">shouldWriteAltitude</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-817"></a> <span class="n">p</span><span class="p">.</span><span class="n">altitude</span> <span class="o">=</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">alt</span><span class="p">();</span>
+<a name="line-818"></a> <span class="p">}</span>
+<a name="line-819"></a> <span class="k">else</span>
+<a name="line-820"></a> <span class="p">{</span>
+<a name="line-821"></a> <span class="n">p</span><span class="p">.</span><span class="n">shouldRemoveAltitude</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-822"></a> <span class="p">}</span>
+<a name="line-823"></a> <span class="p">}</span>
+<a name="line-824"></a> <span class="k">else</span>
+<a name="line-825"></a> <span class="p">{</span>
+<a name="line-826"></a> <span class="n">p</span><span class="p">.</span><span class="n">shouldRemoveCoordinates</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-827"></a> <span class="p">}</span>
+<a name="line-828"></a>
+<a name="line-829"></a> <span class="k">return</span> <span class="n">p</span><span class="p">;</span>
+<a name="line-830"></a><span class="p">}</span>
+<a name="line-831"></a>
+<a name="line-832"></a><span class="n">QString</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">saveChanges</span><span class="p">()</span>
+<a name="line-833"></a><span class="p">{</span>
+<a name="line-834"></a> <span class="n">SaveProperties</span> <span class="n">p</span> <span class="o">=</span> <span class="n">saveProperties</span><span class="p">();</span>
+<a name="line-835"></a>
+<a name="line-836"></a> <span class="n">QString</span> <span class="n">returnString</span><span class="p">;</span>
+<a name="line-837"></a>
+<a name="line-838"></a> <span class="c1">// first try to write the information to the image file</span>
+<a name="line-839"></a>
+<a name="line-840"></a><span class="hll"> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span><span class='error2'>&lt;--- Shadowed declaration</span>
+</span><a name="line-841"></a> <span class="n">QScopedPointer</span><span class="o">&lt;</span><span class="n">DMetadata</span><span class="o">&gt;</span> <span class="n">meta</span><span class="p">(</span><span class="n">getMetadataForFile</span><span class="p">());</span>
+<a name="line-842"></a>
+<a name="line-843"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">meta</span><span class="p">)</span>
+<a name="line-844"></a> <span class="p">{</span>
+<a name="line-845"></a> <span class="c1">// TODO: more verbosity!</span>
+<a name="line-846"></a>
+<a name="line-847"></a> <span class="n">returnString</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to open file.&quot;</span><span class="p">);</span>
+<a name="line-848"></a> <span class="p">}</span>
+<a name="line-849"></a> <span class="k">else</span>
+<a name="line-850"></a> <span class="p">{</span>
+<a name="line-851"></a> <span class="k">if</span> <span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">shouldWriteCoordinates</span><span class="p">)</span>
+<a name="line-852"></a> <span class="p">{</span>
+<a name="line-853"></a> <span class="k">if</span> <span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">shouldWriteAltitude</span><span class="p">)</span>
+<a name="line-854"></a> <span class="p">{</span>
+<a name="line-855"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">setGPSInfo</span><span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">altitude</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">latitude</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">longitude</span><span class="p">);</span>
+<a name="line-856"></a> <span class="p">}</span>
+<a name="line-857"></a> <span class="k">else</span>
+<a name="line-858"></a> <span class="p">{</span>
+<a name="line-859"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">setGPSInfo</span><span class="p">(</span><span class="k">nullptr</span><span class="p">,</span>
+<a name="line-860"></a> <span class="n">p</span><span class="p">.</span><span class="n">latitude</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">longitude</span><span class="p">);</span>
+<a name="line-861"></a> <span class="p">}</span>
+<a name="line-862"></a>
+<a name="line-863"></a> <span class="c1">// write all other GPS information here too</span>
+<a name="line-864"></a>
+<a name="line-865"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span> <span class="o">&amp;&amp;</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasSpeed</span><span class="p">())</span>
+<a name="line-866"></a> <span class="p">{</span>
+<a name="line-867"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">setExifXmpTagDataVariant</span><span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span>
+<a name="line-868"></a> <span class="s">&quot;Exif.GPSInfo.GPSSpeedRef&quot;</span><span class="p">,</span>
+<a name="line-869"></a> <span class="s">&quot;Xmp.exif.GPSSpeedRef&quot;</span><span class="p">,</span>
+<a name="line-870"></a> <span class="n">QVariant</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;K&quot;</span><span class="p">)));</span>
+<a name="line-871"></a>
+<a name="line-872"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span><span class="p">)</span>
+<a name="line-873"></a> <span class="p">{</span>
+<a name="line-874"></a> <span class="k">const</span> <span class="n">qreal</span> <span class="n">speedInMetersPerSecond</span> <span class="o">=</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">getSpeed</span><span class="p">();</span>
+<a name="line-875"></a>
+<a name="line-876"></a> <span class="c1">// km/h = 0.001 * m / ( s * 1/(60*60) ) = 3.6 * m/s</span>
+<a name="line-877"></a>
+<a name="line-878"></a> <span class="k">const</span> <span class="n">qreal</span> <span class="n">speedInKilometersPerHour</span> <span class="o">=</span> <span class="mf">3.6</span> <span class="o">*</span> <span class="n">speedInMetersPerSecond</span><span class="p">;</span>
+<a name="line-879"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">setExifXmpTagDataVariant</span><span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="s">&quot;Exif.GPSInfo.GPSSpeed&quot;</span><span class="p">,</span> <span class="s">&quot;Xmp.exif.GPSSpeed&quot;</span><span class="p">,</span> <span class="n">QVariant</span><span class="p">(</span><span class="n">speedInKilometersPerHour</span><span class="p">));</span>
+<a name="line-880"></a> <span class="p">}</span>
+<a name="line-881"></a> <span class="p">}</span>
+<a name="line-882"></a>
+<a name="line-883"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span> <span class="o">&amp;&amp;</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">())</span>
+<a name="line-884"></a> <span class="p">{</span>
+<a name="line-885"></a> <span class="cm">/**</span>
+<a name="line-886"></a><span class="cm"> * @todo According to the EXIF 2.2 spec, GPSSatellites is a free form field which can either hold only the</span>
+<a name="line-887"></a><span class="cm"> * number of satellites or more details about each satellite used. For now, we just write</span>
+<a name="line-888"></a><span class="cm"> * the number of satellites. Are we using the correct format for the number of satellites here?</span>
+<a name="line-889"></a><span class="cm"> */</span>
+<a name="line-890"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">setExifXmpTagDataVariant</span><span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span>
+<a name="line-891"></a> <span class="s">&quot;Exif.GPSInfo.GPSSatellites&quot;</span><span class="p">,</span> <span class="s">&quot;Xmp.exif.GPSSatellites&quot;</span><span class="p">,</span>
+<a name="line-892"></a> <span class="n">QVariant</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getNSatellites</span><span class="p">())));</span>
+<a name="line-893"></a> <span class="p">}</span>
+<a name="line-894"></a>
+<a name="line-895"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span> <span class="o">&amp;&amp;</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasFixType</span><span class="p">())</span>
+<a name="line-896"></a> <span class="p">{</span>
+<a name="line-897"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">setExifXmpTagDataVariant</span><span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span>
+<a name="line-898"></a> <span class="s">&quot;Exif.GPSInfo.GPSMeasureMode&quot;</span><span class="p">,</span> <span class="s">&quot;Xmp.exif.GPSMeasureMode&quot;</span><span class="p">,</span>
+<a name="line-899"></a> <span class="n">QVariant</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getFixType</span><span class="p">())));</span>
+<a name="line-900"></a> <span class="p">}</span>
+<a name="line-901"></a>
+<a name="line-902"></a> <span class="c1">// write DOP</span>
+<a name="line-903"></a>
+<a name="line-904"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span> <span class="o">&amp;&amp;</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasDop</span><span class="p">())</span>
+<a name="line-905"></a> <span class="p">{</span>
+<a name="line-906"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">setExifXmpTagDataVariant</span><span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span>
+<a name="line-907"></a> <span class="s">&quot;Exif.GPSInfo.GPSDOP&quot;</span><span class="p">,</span>
+<a name="line-908"></a> <span class="s">&quot;Xmp.exif.GPSDOP&quot;</span><span class="p">,</span>
+<a name="line-909"></a> <span class="n">QVariant</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getDop</span><span class="p">()));</span>
+<a name="line-910"></a> <span class="p">}</span>
+<a name="line-911"></a>
+<a name="line-912"></a>
+<a name="line-913"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">success</span><span class="p">)</span>
+<a name="line-914"></a> <span class="p">{</span>
+<a name="line-915"></a> <span class="n">returnString</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to add GPS info to image.&quot;</span><span class="p">);</span>
+<a name="line-916"></a> <span class="p">}</span>
+<a name="line-917"></a> <span class="p">}</span>
+<a name="line-918"></a>
+<a name="line-919"></a> <span class="k">if</span> <span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">shouldRemoveCoordinates</span><span class="p">)</span>
+<a name="line-920"></a> <span class="p">{</span>
+<a name="line-921"></a> <span class="c1">// TODO: remove only the altitude if requested</span>
+<a name="line-922"></a>
+<a name="line-923"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">removeGPSInfo</span><span class="p">();</span>
+<a name="line-924"></a>
+<a name="line-925"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">success</span><span class="p">)</span>
+<a name="line-926"></a> <span class="p">{</span>
+<a name="line-927"></a> <span class="n">returnString</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to remove GPS info from image&quot;</span><span class="p">);</span>
+<a name="line-928"></a> <span class="p">}</span>
+<a name="line-929"></a> <span class="p">}</span>
+<a name="line-930"></a>
+<a name="line-931"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_tagList</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">m_writeXmpTags</span><span class="p">)</span>
+<a name="line-932"></a> <span class="p">{</span>
+<a name="line-933"></a> <span class="n">QStringList</span> <span class="n">tagSeq</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">getXmpTagStringSeq</span><span class="p">(</span><span class="s">&quot;Xmp.digiKam.TagsList&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
+<a name="line-934"></a>
+<a name="line-935"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">m_tagList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-936"></a> <span class="p">{</span>
+<a name="line-937"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="n">currentTagList</span> <span class="o">=</span> <span class="n">m_tagList</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+<a name="line-938"></a> <span class="n">QString</span> <span class="n">tag</span><span class="p">;</span>
+<a name="line-939"></a>
+<a name="line-940"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">j</span> <span class="o">&lt;</span> <span class="n">currentTagList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span>
+<a name="line-941"></a> <span class="p">{</span>
+<a name="line-942"></a> <span class="n">tag</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">currentTagList</span><span class="p">[</span><span class="n">j</span><span class="p">].</span><span class="n">tagName</span><span class="p">);</span>
+<a name="line-943"></a> <span class="p">}</span>
+<a name="line-944"></a>
+<a name="line-945"></a> <span class="n">tag</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-946"></a>
+<a name="line-947"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">tagSeq</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">tag</span><span class="p">))</span>
+<a name="line-948"></a> <span class="p">{</span>
+<a name="line-949"></a> <span class="n">tagSeq</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>
+<a name="line-950"></a> <span class="p">}</span>
+<a name="line-951"></a> <span class="p">}</span>
+<a name="line-952"></a>
+<a name="line-953"></a><span class="hll"> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">setXmpTagStringSeq</span><span class="p">(</span><span class="s">&quot;Xmp.digiKam.TagsList&quot;</span><span class="p">,</span> <span class="n">tagSeq</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-954"></a>
+<a name="line-955"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">success</span><span class="p">)</span>
+<a name="line-956"></a> <span class="p">{</span>
+<a name="line-957"></a> <span class="n">returnString</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to save tags to file.&quot;</span><span class="p">);</span>
+<a name="line-958"></a> <span class="p">}</span>
+<a name="line-959"></a>
+<a name="line-960"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">setXmpTagStringSeq</span><span class="p">(</span><span class="s">&quot;Xmp.dc.subject&quot;</span><span class="p">,</span> <span class="n">tagSeq</span><span class="p">);</span>
+<a name="line-961"></a>
+<a name="line-962"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">success</span><span class="p">)</span>
+<a name="line-963"></a> <span class="p">{</span>
+<a name="line-964"></a> <span class="n">returnString</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to save tags to file.&quot;</span><span class="p">);</span>
+<a name="line-965"></a> <span class="p">}</span>
+<a name="line-966"></a> <span class="p">}</span>
+<a name="line-967"></a> <span class="p">}</span>
+<a name="line-968"></a>
+<a name="line-969"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span><span class="p">)</span>
+<a name="line-970"></a> <span class="p">{</span>
+<a name="line-971"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">save</span><span class="p">(</span><span class="n">m_url</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">());</span>
+<a name="line-972"></a>
+<a name="line-973"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">success</span><span class="p">)</span>
+<a name="line-974"></a> <span class="p">{</span>
+<a name="line-975"></a> <span class="n">returnString</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Unable to save changes to file&quot;</span><span class="p">);</span>
+<a name="line-976"></a> <span class="p">}</span>
+<a name="line-977"></a> <span class="k">else</span>
+<a name="line-978"></a> <span class="p">{</span>
+<a name="line-979"></a> <span class="n">m_dirty</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-980"></a> <span class="n">m_savedState</span> <span class="o">=</span> <span class="n">m_gpsData</span><span class="p">;</span>
+<a name="line-981"></a> <span class="n">m_tagListDirty</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-982"></a> <span class="n">m_savedTagList</span> <span class="o">=</span> <span class="n">m_tagList</span><span class="p">;</span>
+<a name="line-983"></a> <span class="p">}</span>
+<a name="line-984"></a> <span class="p">}</span>
+<a name="line-985"></a>
+<a name="line-986"></a> <span class="k">if</span> <span class="p">(</span><span class="n">returnString</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-987"></a> <span class="p">{</span>
+<a name="line-988"></a> <span class="c1">// mark all changes as not dirty and tell the model:</span>
+<a name="line-989"></a>
+<a name="line-990"></a> <span class="n">emitDataChanged</span><span class="p">();</span>
+<a name="line-991"></a> <span class="p">}</span>
+<a name="line-992"></a>
+<a name="line-993"></a> <span class="k">return</span> <span class="n">returnString</span><span class="p">;</span>
+<a name="line-994"></a><span class="p">}</span>
+<a name="line-995"></a>
+<a name="line-996"></a><span class="cm">/**</span>
+<a name="line-997"></a><span class="cm"> * @brief Restore the gps data to @p container. Sets m_dirty to false if container equals savedState.</span>
+<a name="line-998"></a><span class="cm"> */</span>
+<a name="line-999"></a><span class="kt">void</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">restoreGPSData</span><span class="p">(</span><span class="k">const</span> <span class="n">GPSDataContainer</span><span class="o">&amp;</span> <span class="n">container</span><span class="p">)</span>
+<a name="line-1000"></a><span class="p">{</span>
+<a name="line-1001"></a> <span class="n">m_dirty</span> <span class="o">=</span> <span class="o">!</span><span class="p">(</span><span class="n">container</span> <span class="o">==</span> <span class="n">m_savedState</span><span class="p">);</span>
+<a name="line-1002"></a> <span class="n">m_gpsData</span> <span class="o">=</span> <span class="n">container</span><span class="p">;</span>
+<a name="line-1003"></a> <span class="n">emitDataChanged</span><span class="p">();</span>
+<a name="line-1004"></a><span class="p">}</span>
+<a name="line-1005"></a>
+<a name="line-1006"></a><span class="kt">void</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">restoreRGTagList</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;&amp;</span> <span class="n">tagList</span><span class="p">)</span>
+<a name="line-1007"></a><span class="p">{</span>
+<a name="line-1008"></a> <span class="c1">// TODO: override == operator</span>
+<a name="line-1009"></a>
+<a name="line-1010"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tagList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">!=</span> <span class="n">m_savedTagList</span><span class="p">.</span><span class="n">count</span><span class="p">())</span>
+<a name="line-1011"></a> <span class="p">{</span>
+<a name="line-1012"></a> <span class="n">m_tagListDirty</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-1013"></a> <span class="p">}</span>
+<a name="line-1014"></a> <span class="k">else</span>
+<a name="line-1015"></a> <span class="p">{</span>
+<a name="line-1016"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">tagList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-1017"></a> <span class="p">{</span>
+<a name="line-1018"></a> <span class="kt">bool</span> <span class="n">foundNotEqual</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-1019"></a>
+<a name="line-1020"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tagList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">count</span><span class="p">()</span> <span class="o">!=</span> <span class="n">m_savedTagList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">count</span><span class="p">())</span>
+<a name="line-1021"></a> <span class="p">{</span>
+<a name="line-1022"></a> <span class="n">m_tagListDirty</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-1023"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-1024"></a> <span class="p">}</span>
+<a name="line-1025"></a>
+<a name="line-1026"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">j</span> <span class="o">&lt;</span> <span class="n">tagList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span>
+<a name="line-1027"></a> <span class="p">{</span>
+<a name="line-1028"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tagList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">at</span><span class="p">(</span><span class="n">j</span><span class="p">).</span><span class="n">tagName</span> <span class="o">!=</span> <span class="n">m_savedTagList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">at</span><span class="p">(</span><span class="n">j</span><span class="p">).</span><span class="n">tagName</span><span class="p">)</span>
+<a name="line-1029"></a> <span class="p">{</span>
+<a name="line-1030"></a> <span class="n">foundNotEqual</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-1031"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-1032"></a> <span class="p">}</span>
+<a name="line-1033"></a> <span class="p">}</span>
+<a name="line-1034"></a>
+<a name="line-1035"></a> <span class="k">if</span> <span class="p">(</span><span class="n">foundNotEqual</span><span class="p">)</span>
+<a name="line-1036"></a> <span class="p">{</span>
+<a name="line-1037"></a> <span class="n">m_tagListDirty</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-1038"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-1039"></a> <span class="p">}</span>
+<a name="line-1040"></a> <span class="p">}</span>
+<a name="line-1041"></a> <span class="p">}</span>
+<a name="line-1042"></a>
+<a name="line-1043"></a> <span class="n">m_tagList</span> <span class="o">=</span> <span class="n">tagList</span><span class="p">;</span>
+<a name="line-1044"></a>
+<a name="line-1045"></a> <span class="n">emitDataChanged</span><span class="p">();</span>
+<a name="line-1046"></a><span class="p">}</span>
+<a name="line-1047"></a>
+<a name="line-1048"></a><span class="kt">bool</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">isDirty</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-1049"></a><span class="p">{</span>
+<a name="line-1050"></a> <span class="k">return</span> <span class="n">m_dirty</span><span class="p">;</span>
+<a name="line-1051"></a><span class="p">}</span>
+<a name="line-1052"></a>
+<a name="line-1053"></a><span class="n">QUrl</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">url</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-1054"></a><span class="p">{</span>
+<a name="line-1055"></a> <span class="k">return</span> <span class="n">m_url</span><span class="p">;</span>
+<a name="line-1056"></a><span class="p">}</span>
+<a name="line-1057"></a>
+<a name="line-1058"></a><span class="n">QDateTime</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">dateTime</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-1059"></a><span class="p">{</span>
+<a name="line-1060"></a> <span class="k">return</span> <span class="n">m_dateTime</span><span class="p">;</span>
+<a name="line-1061"></a><span class="p">}</span>
+<a name="line-1062"></a>
+<a name="line-1063"></a><span class="n">GeoCoordinates</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">coordinates</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-1064"></a><span class="p">{</span>
+<a name="line-1065"></a> <span class="k">return</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">();</span>
+<a name="line-1066"></a><span class="p">}</span>
+<a name="line-1067"></a>
+<a name="line-1068"></a><span class="n">GPSDataContainer</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">gpsData</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-1069"></a><span class="p">{</span>
+<a name="line-1070"></a> <span class="k">return</span> <span class="n">m_gpsData</span><span class="p">;</span>
+<a name="line-1071"></a><span class="p">}</span>
+<a name="line-1072"></a>
+<a name="line-1073"></a><span class="kt">void</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">setGPSData</span><span class="p">(</span><span class="k">const</span> <span class="n">GPSDataContainer</span><span class="o">&amp;</span> <span class="n">container</span><span class="p">)</span>
+<a name="line-1074"></a><span class="p">{</span>
+<a name="line-1075"></a> <span class="n">m_gpsData</span> <span class="o">=</span> <span class="n">container</span><span class="p">;</span>
+<a name="line-1076"></a> <span class="n">m_dirty</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-1077"></a>
+<a name="line-1078"></a> <span class="n">emitDataChanged</span><span class="p">();</span>
+<a name="line-1079"></a><span class="p">}</span>
+<a name="line-1080"></a>
+<a name="line-1081"></a><span class="kt">void</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">setTagList</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;&amp;</span> <span class="n">externalTagList</span><span class="p">)</span>
+<a name="line-1082"></a><span class="p">{</span>
+<a name="line-1083"></a> <span class="n">m_tagList</span> <span class="o">=</span> <span class="n">externalTagList</span><span class="p">;</span>
+<a name="line-1084"></a> <span class="n">m_tagListDirty</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-1085"></a>
+<a name="line-1086"></a> <span class="n">emitDataChanged</span><span class="p">();</span>
+<a name="line-1087"></a><span class="p">}</span>
+<a name="line-1088"></a>
+<a name="line-1089"></a><span class="kt">bool</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">isTagListDirty</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-1090"></a><span class="p">{</span>
+<a name="line-1091"></a> <span class="k">return</span> <span class="n">m_tagListDirty</span><span class="p">;</span>
+<a name="line-1092"></a><span class="p">}</span>
+<a name="line-1093"></a>
+<a name="line-1094"></a><span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">getTagList</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-1095"></a><span class="p">{</span>
+<a name="line-1096"></a> <span class="k">return</span> <span class="n">m_tagList</span><span class="p">;</span>
+<a name="line-1097"></a><span class="p">}</span>
+<a name="line-1098"></a>
+<a name="line-1099"></a><span class="p">}</span> <span class="c1">// namespace Digikam</span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/18.html b/static/reports/cppcheck/master/18.html
index f7ea6f37f..e6dd90d80 100644
--- a/static/reports/cppcheck/master/18.html
+++ b/static/reports/cppcheck/master/18.html
@@ -1,387 +1,703 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/tests/geolocation/editor/test_simpletreemodel.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/utilities/geolocation/geoiface/reversegeocoding/parsetagstring.h </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> test_simpletreemodel.cpp</p>
-<a href='18.html#line-69'> shadowVar 69</a><a href='18.html#line-69'> shadowVar 69</a><a href='18.html#line-71'> shadowVar 71</a><a href='18.html#line-71'> shadowVar 71</a><a href='18.html#line-96'> shadowVar 96</a><a href='18.html#line-98'> shadowVar 98</a><a href='18.html#line-108'> shadowVar 108</a><a href='18.html#line-110'> shadowVar 110</a>
+ <p id="filename"><a href="index.html">Defects:</a> parsetagstring.h</p>
+<a href='18.html#line-50'> shadowVar 50</a><a href='18.html#line-50'> shadowVar 50</a><a href='18.html#line-50'> shadowVar 50</a><a href='18.html#line-169'> shadowVar 169</a><a href='18.html#line-216'> shadowVar 216</a><a href='18.html#line-252'> shadowVar 252</a>
</div>
<div id="content">
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
-121</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
-<a name="line-6"></a><span class="cm"> * Date : 2010-06-21</span>
-<a name="line-7"></a><span class="cm"> * Description : Test for SimpleTreeModel.</span>
+<a name="line-6"></a><span class="cm"> * Date : 2010-05-12</span>
+<a name="line-7"></a><span class="cm"> * Description : Parses retrieved data into tag string.</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2010 by Michael G. Hansen &lt;mike at mghansen dot de&gt;</span>
-<a name="line-10"></a><span class="cm"> *</span>
-<a name="line-11"></a><span class="cm"> * This program is free software; you can redistribute it</span>
-<a name="line-12"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
-<a name="line-13"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
-<a name="line-14"></a><span class="cm"> * either version 2, or (at your option)</span>
-<a name="line-15"></a><span class="cm"> * any later version.</span>
-<a name="line-16"></a><span class="cm"> *</span>
-<a name="line-17"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
-<a name="line-18"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
-<a name="line-19"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
-<a name="line-20"></a><span class="cm"> * GNU General Public License for more details.</span>
-<a name="line-21"></a><span class="cm"> *</span>
-<a name="line-22"></a><span class="cm"> * ============================================================ */</span>
-<a name="line-23"></a>
-<a name="line-24"></a><span class="cp">#include</span> <span class="cpf">&quot;test_simpletreemodel.h&quot;</span><span class="cp"></span>
-<a name="line-25"></a>
-<a name="line-26"></a><span class="c1">// Qt includes</span>
+<a name="line-10"></a><span class="cm"> * Copyright (C) 2010 by Gabriel Voicu &lt;ping dot gabi at gmail dot com&gt;</span>
+<a name="line-11"></a><span class="cm"> *</span>
+<a name="line-12"></a><span class="cm"> * This program is free software; you can redistribute it</span>
+<a name="line-13"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
+<a name="line-14"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
+<a name="line-15"></a><span class="cm"> * either version 2, or (at your option)</span>
+<a name="line-16"></a><span class="cm"> * any later version.</span>
+<a name="line-17"></a><span class="cm"> *</span>
+<a name="line-18"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
+<a name="line-19"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
+<a name="line-20"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
+<a name="line-21"></a><span class="cm"> * GNU General Public License for more details.</span>
+<a name="line-22"></a><span class="cm"> *</span>
+<a name="line-23"></a><span class="cm"> * ============================================================ */</span>
+<a name="line-24"></a>
+<a name="line-25"></a><span class="cp">#ifndef DIGIKAM_PARSE_TAG_STRING_H</span>
+<a name="line-26"></a><span class="cp">#define DIGIKAM_PARSE_TAG_STRING_H</span>
<a name="line-27"></a>
-<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;QUrl&gt;</span><span class="cp"></span>
-<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QDebug&gt;</span><span class="cp"></span>
-<a name="line-30"></a>
-<a name="line-31"></a><span class="c1">// local includes</span>
+<a name="line-28"></a><span class="c1">// local includes</span>
+<a name="line-29"></a>
+<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
+<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&quot;backend-rg.h&quot;</span><span class="cp"></span>
<a name="line-32"></a>
-<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&quot;simpletreemodel.h&quot;</span><span class="cp"></span>
-<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&quot;modeltest.h&quot;</span><span class="cp"></span>
+<a name="line-33"></a><span class="n">namespace</span> <span class="n">Digikam</span>
+<a name="line-34"></a><span class="p">{</span>
<a name="line-35"></a>
-<a name="line-36"></a><span class="k">using</span> <span class="k">namespace</span> <span class="n">Digikam</span><span class="p">;</span>
-<a name="line-37"></a>
-<a name="line-38"></a><span class="cm">/**</span>
-<a name="line-39"></a><span class="cm"> * Description : Dummy test that does nothing</span>
-<a name="line-40"></a><span class="cm"> */</span>
-<a name="line-41"></a><span class="kt">void</span> <span class="n">TestSimpleTreeModel</span><span class="o">::</span><span class="n">testNoOp</span><span class="p">()</span>
-<a name="line-42"></a><span class="p">{</span>
-<a name="line-43"></a><span class="p">}</span>
-<a name="line-44"></a>
-<a name="line-45"></a><span class="kt">void</span> <span class="n">TestSimpleTreeModel</span><span class="o">::</span><span class="n">testModel1</span><span class="p">()</span>
-<a name="line-46"></a><span class="p">{</span>
-<a name="line-47"></a> <span class="n">SimpleTreeModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">treeModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SimpleTreeModel</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-48"></a> <span class="k">new</span> <span class="nf">ModelTest</span><span class="p">(</span><span class="n">treeModel</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-49"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="o">!</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">).</span><span class="n">isValid</span><span class="p">());</span>
-<a name="line-50"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">indexToItem</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">())</span><span class="o">==</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">rootItem</span><span class="p">());</span>
-<a name="line-51"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="o">!</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">itemToIndex</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">rootItem</span><span class="p">()).</span><span class="n">isValid</span><span class="p">());</span>
-<a name="line-52"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="o">!</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">itemToIndex</span><span class="p">(</span><span class="k">nullptr</span><span class="p">).</span><span class="n">isValid</span><span class="p">());</span>
-<a name="line-53"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="o">!</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">()).</span><span class="n">isValid</span><span class="p">());</span>
+<a name="line-36"></a><span class="n">QStringList</span> <span class="n">makeTagString</span><span class="p">(</span><span class="k">const</span> <span class="n">RGInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">,</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">inputFormat</span><span class="p">,</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">backendName</span><span class="p">)</span>
+<a name="line-37"></a><span class="p">{</span>
+<a name="line-38"></a> <span class="n">QString</span> <span class="n">auxReturnedFormat</span> <span class="o">=</span> <span class="n">inputFormat</span><span class="p">;</span>
+<a name="line-39"></a> <span class="n">QString</span> <span class="n">returnedAddress</span> <span class="o">=</span> <span class="n">inputFormat</span><span class="p">;</span>
+<a name="line-40"></a> <span class="n">QString</span> <span class="n">returnedFormat</span><span class="p">;</span>
+<a name="line-41"></a>
+<a name="line-42"></a> <span class="n">QStringList</span> <span class="n">returnedAddressElements</span><span class="p">;</span>
+<a name="line-43"></a>
+<a name="line-44"></a> <span class="kt">int</span> <span class="n">indexFBracket</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+<a name="line-45"></a>
+<a name="line-46"></a> <span class="k">while</span> <span class="p">((</span><span class="n">indexFBracket</span> <span class="o">=</span> <span class="n">returnedAddress</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{&quot;</span><span class="p">)))</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-47"></a> <span class="p">{</span>
+<a name="line-48"></a> <span class="kt">int</span> <span class="n">indexLBracket</span> <span class="o">=</span> <span class="n">returnedAddress</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;}&quot;</span><span class="p">));</span>
+<a name="line-49"></a> <span class="n">QString</span> <span class="n">humanTag</span> <span class="o">=</span> <span class="n">returnedAddress</span><span class="p">.</span><span class="n">mid</span><span class="p">(</span><span class="n">indexFBracket</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">indexLBracket</span><span class="o">-</span><span class="n">indexFBracket</span><span class="o">-</span><span class="mi">1</span><span class="p">);</span>
+<a name="line-50"></a><span class="hll"> <span class="kt">int</span> <span class="n">indexFormatFBracket</span> <span class="o">=</span> <span class="n">auxReturnedFormat</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{&quot;</span><span class="p">));</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span>
+</span><a name="line-51"></a> <span class="n">auxReturnedFormat</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">indexFormatFBracket</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">humanTag</span><span class="p">.</span><span class="n">length</span><span class="p">()</span> <span class="o">+</span> <span class="mi">3</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
+<a name="line-52"></a> <span class="kt">bool</span> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-53"></a> <span class="n">QString</span> <span class="n">result</span><span class="p">;</span>
<a name="line-54"></a>
-<a name="line-55"></a> <span class="n">SimpleTreeModel</span><span class="o">::</span><span class="n">Item</span><span class="o">*</span> <span class="k">const</span> <span class="n">item1</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">();</span>
-<a name="line-56"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item1</span><span class="o">!=</span><span class="k">nullptr</span><span class="p">);</span>
-<a name="line-57"></a> <span class="k">const</span> <span class="n">QPersistentModelIndex</span> <span class="n">item1Index</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">itemToIndex</span><span class="p">(</span><span class="n">item1</span><span class="p">);</span>
-<a name="line-58"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item1Index</span><span class="p">.</span><span class="n">isValid</span><span class="p">());</span>
-<a name="line-59"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">indexToItem</span><span class="p">(</span><span class="n">item1Index</span><span class="p">)</span><span class="o">==</span><span class="n">item1</span><span class="p">);</span>
-<a name="line-60"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="o">!</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">(</span><span class="n">item1Index</span><span class="p">).</span><span class="n">isValid</span><span class="p">());</span>
-<a name="line-61"></a>
-<a name="line-62"></a> <span class="n">SimpleTreeModel</span><span class="o">::</span><span class="n">Item</span><span class="o">*</span> <span class="k">const</span> <span class="n">item2</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">();</span>
-<a name="line-63"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item2</span><span class="o">!=</span><span class="k">nullptr</span><span class="p">);</span>
-<a name="line-64"></a> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">item2Index</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">itemToIndex</span><span class="p">(</span><span class="n">item2</span><span class="p">);</span>
-<a name="line-65"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item2Index</span><span class="p">.</span><span class="n">isValid</span><span class="p">());</span>
-<a name="line-66"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">indexToItem</span><span class="p">(</span><span class="n">item2Index</span><span class="p">)</span><span class="o">==</span><span class="n">item2</span><span class="p">);</span>
-<a name="line-67"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="o">!</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">(</span><span class="n">item2Index</span><span class="p">).</span><span class="n">isValid</span><span class="p">());</span>
-<a name="line-68"></a>
-<a name="line-69"></a><span class="hll"> <span class="n">SimpleTreeModel</span><span class="o">::</span><span class="n">Item</span><span class="o">*</span> <span class="k">const</span> <span class="n">item21</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">item2</span><span class="p">);</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span>
-</span><a name="line-70"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item21</span><span class="o">!=</span><span class="k">nullptr</span><span class="p">);</span>
-<a name="line-71"></a><span class="hll"> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">item21Index</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">itemToIndex</span><span class="p">(</span><span class="n">item21</span><span class="p">);</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span>
-</span><a name="line-72"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item21Index</span><span class="p">.</span><span class="n">isValid</span><span class="p">());</span>
-<a name="line-73"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">indexToItem</span><span class="p">(</span><span class="n">item21Index</span><span class="p">)</span><span class="o">==</span><span class="n">item21</span><span class="p">);</span>
-<a name="line-74"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">(</span><span class="n">item21Index</span><span class="p">)</span><span class="o">==</span><span class="n">item2Index</span><span class="p">);</span>
-<a name="line-75"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">item2Index</span><span class="p">)</span><span class="o">==</span><span class="n">item21Index</span><span class="p">);</span>
-<a name="line-76"></a>
-<a name="line-77"></a> <span class="c1">// just make sure another modeltest will test things for consistency in case a signal went missing</span>
-<a name="line-78"></a> <span class="k">new</span> <span class="nf">ModelTest</span><span class="p">(</span><span class="n">treeModel</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-79"></a>
-<a name="line-80"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">rootItem</span><span class="p">()</span> <span class="o">==</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">indexToItem</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">()));</span>
-<a name="line-81"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">indexToItem</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">itemToIndex</span><span class="p">(</span><span class="n">item1</span><span class="p">))</span><span class="o">==</span><span class="n">item1</span><span class="p">);</span>
-<a name="line-82"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">hasIndex</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">==</span> <span class="nb">true</span><span class="p">);</span>
-<a name="line-83"></a>
-<a name="line-84"></a> <span class="n">QModelIndex</span> <span class="n">topIndex</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">QModelIndex</span><span class="p">());</span>
-<a name="line-85"></a>
-<a name="line-86"></a> <span class="k">if</span> <span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">topIndex</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-87"></a> <span class="p">{</span>
-<a name="line-88"></a> <span class="n">QModelIndex</span> <span class="n">childIndex</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">topIndex</span><span class="p">);</span>
-<a name="line-89"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">childIndex</span><span class="p">;</span>
-<a name="line-90"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">(</span><span class="n">childIndex</span><span class="p">);</span>
-<a name="line-91"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">(</span><span class="n">childIndex</span><span class="p">)</span> <span class="o">==</span> <span class="n">topIndex</span><span class="p">);</span>
-<a name="line-92"></a> <span class="p">}</span>
-<a name="line-93"></a>
-<a name="line-94"></a> <span class="c1">// add another few items:</span>
-<a name="line-95"></a> <span class="p">{</span>
-<a name="line-96"></a><span class="hll"> <span class="n">SimpleTreeModel</span><span class="o">::</span><span class="n">Item</span><span class="o">*</span> <span class="k">const</span> <span class="n">item21</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">item2</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-97"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item21</span><span class="o">!=</span><span class="k">nullptr</span><span class="p">);</span>
-<a name="line-98"></a><span class="hll"> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">item21Index</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">itemToIndex</span><span class="p">(</span><span class="n">item21</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-99"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item21Index</span><span class="p">.</span><span class="n">isValid</span><span class="p">());</span>
-<a name="line-100"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">indexToItem</span><span class="p">(</span><span class="n">item21Index</span><span class="p">)</span><span class="o">==</span><span class="n">item21</span><span class="p">);</span>
-<a name="line-101"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">(</span><span class="n">item21Index</span><span class="p">)</span><span class="o">==</span><span class="n">item2Index</span><span class="p">);</span>
-<a name="line-102"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">item2Index</span><span class="p">)</span><span class="o">==</span><span class="n">item21Index</span><span class="p">);</span>
-<a name="line-103"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item21Index</span><span class="p">.</span><span class="n">row</span><span class="p">()</span><span class="o">==</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-104"></a> <span class="p">}</span>
-<a name="line-105"></a>
-<a name="line-106"></a> <span class="c1">// add another few items:</span>
-<a name="line-107"></a> <span class="p">{</span>
-<a name="line-108"></a><span class="hll"> <span class="n">SimpleTreeModel</span><span class="o">::</span><span class="n">Item</span><span class="o">*</span> <span class="k">const</span> <span class="n">item21</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">item2</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-109"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item21</span><span class="o">!=</span><span class="k">nullptr</span><span class="p">);</span>
-<a name="line-110"></a><span class="hll"> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">item21Index</span> <span class="o">=</span> <span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">itemToIndex</span><span class="p">(</span><span class="n">item21</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-111"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item21Index</span><span class="p">.</span><span class="n">isValid</span><span class="p">());</span>
-<a name="line-112"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">indexToItem</span><span class="p">(</span><span class="n">item21Index</span><span class="p">)</span><span class="o">==</span><span class="n">item21</span><span class="p">);</span>
-<a name="line-113"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">(</span><span class="n">item21Index</span><span class="p">)</span><span class="o">==</span><span class="n">item2Index</span><span class="p">);</span>
-<a name="line-114"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">treeModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">item2Index</span><span class="p">)</span><span class="o">==</span><span class="n">item21Index</span><span class="p">);</span>
-<a name="line-115"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">item21Index</span><span class="p">.</span><span class="n">row</span><span class="p">()</span><span class="o">==</span><span class="mi">1</span><span class="p">);</span>
-<a name="line-116"></a> <span class="p">}</span>
-<a name="line-117"></a>
-<a name="line-118"></a> <span class="k">new</span> <span class="n">ModelTest</span><span class="p">(</span><span class="n">treeModel</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-119"></a><span class="p">}</span>
-<a name="line-120"></a>
-<a name="line-121"></a><span class="n">QTEST_GUILESS_MAIN</span><span class="p">(</span><span class="n">TestSimpleTreeModel</span><span class="p">)</span>
+<a name="line-55"></a> <span class="k">if</span> <span class="p">(</span><span class="n">backendName</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;OSM&quot;</span><span class="p">))</span>
+<a name="line-56"></a> <span class="p">{</span>
+<a name="line-57"></a> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Country&quot;</span><span class="p">))</span>
+<a name="line-58"></a> <span class="p">{</span>
+<a name="line-59"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;country&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-60"></a> <span class="p">{</span>
+<a name="line-61"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;country&quot;</span><span class="p">)];</span>
+<a name="line-62"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{Country}&quot;</span><span class="p">));</span>
+<a name="line-63"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-64"></a> <span class="p">}</span>
+<a name="line-65"></a> <span class="p">}</span>
+<a name="line-66"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;State district&quot;</span><span class="p">))</span>
+<a name="line-67"></a> <span class="p">{</span>
+<a name="line-68"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;state_district&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-69"></a> <span class="p">{</span>
+<a name="line-70"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;state_district&quot;</span><span class="p">)];</span>
+<a name="line-71"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{State district}&quot;</span><span class="p">));</span>
+<a name="line-72"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-73"></a> <span class="p">}</span>
+<a name="line-74"></a> <span class="p">}</span>
+<a name="line-75"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;County&quot;</span><span class="p">))</span>
+<a name="line-76"></a> <span class="p">{</span>
+<a name="line-77"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;county&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-78"></a> <span class="p">{</span>
+<a name="line-79"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;county&quot;</span><span class="p">)];</span>
+<a name="line-80"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{County}&quot;</span><span class="p">));</span>
+<a name="line-81"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-82"></a> <span class="p">}</span>
+<a name="line-83"></a> <span class="p">}</span>
+<a name="line-84"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;City&quot;</span><span class="p">))</span>
+<a name="line-85"></a> <span class="p">{</span>
+<a name="line-86"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;city&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-87"></a> <span class="p">{</span>
+<a name="line-88"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;city&quot;</span><span class="p">)];</span>
+<a name="line-89"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{City}&quot;</span><span class="p">));</span>
+<a name="line-90"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-91"></a> <span class="p">}</span>
+<a name="line-92"></a> <span class="p">}</span>
+<a name="line-93"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;City district&quot;</span><span class="p">))</span>
+<a name="line-94"></a> <span class="p">{</span>
+<a name="line-95"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;city_district&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-96"></a> <span class="p">{</span>
+<a name="line-97"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;city_district&quot;</span><span class="p">)];</span>
+<a name="line-98"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{City district}&quot;</span><span class="p">));</span>
+<a name="line-99"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-100"></a> <span class="p">}</span>
+<a name="line-101"></a> <span class="p">}</span>
+<a name="line-102"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Suburb&quot;</span><span class="p">))</span>
+<a name="line-103"></a> <span class="p">{</span>
+<a name="line-104"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;suburb&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-105"></a> <span class="p">{</span>
+<a name="line-106"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;suburb&quot;</span><span class="p">)];</span>
+<a name="line-107"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{Suburb}&quot;</span><span class="p">));</span>
+<a name="line-108"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-109"></a> <span class="p">}</span>
+<a name="line-110"></a> <span class="p">}</span>
+<a name="line-111"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Street&quot;</span><span class="p">))</span>
+<a name="line-112"></a> <span class="p">{</span>
+<a name="line-113"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;road&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-114"></a> <span class="p">{</span>
+<a name="line-115"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;road&quot;</span><span class="p">)];</span>
+<a name="line-116"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{Street}&quot;</span><span class="p">));</span>
+<a name="line-117"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-118"></a> <span class="p">}</span>
+<a name="line-119"></a> <span class="p">}</span>
+<a name="line-120"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;State&quot;</span><span class="p">))</span>
+<a name="line-121"></a> <span class="p">{</span>
+<a name="line-122"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;state&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-123"></a> <span class="p">{</span>
+<a name="line-124"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;state&quot;</span><span class="p">)];</span>
+<a name="line-125"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{State}&quot;</span><span class="p">));</span>
+<a name="line-126"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-127"></a> <span class="p">}</span>
+<a name="line-128"></a> <span class="p">}</span>
+<a name="line-129"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Town&quot;</span><span class="p">))</span>
+<a name="line-130"></a> <span class="p">{</span>
+<a name="line-131"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;town&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-132"></a> <span class="p">{</span>
+<a name="line-133"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;town&quot;</span><span class="p">)];</span>
+<a name="line-134"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{Town}&quot;</span><span class="p">));</span>
+<a name="line-135"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-136"></a> <span class="p">}</span>
+<a name="line-137"></a> <span class="p">}</span>
+<a name="line-138"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Village&quot;</span><span class="p">))</span>
+<a name="line-139"></a> <span class="p">{</span>
+<a name="line-140"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;village&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-141"></a> <span class="p">{</span>
+<a name="line-142"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;village&quot;</span><span class="p">)];</span>
+<a name="line-143"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{Village}&quot;</span><span class="p">));</span>
+<a name="line-144"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-145"></a> <span class="p">}</span>
+<a name="line-146"></a> <span class="p">}</span>
+<a name="line-147"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Hamlet&quot;</span><span class="p">))</span>
+<a name="line-148"></a> <span class="p">{</span>
+<a name="line-149"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;hamlet&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-150"></a> <span class="p">{</span>
+<a name="line-151"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;hamlet&quot;</span><span class="p">)];</span>
+<a name="line-152"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{Hamlet}&quot;</span><span class="p">));</span>
+<a name="line-153"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-154"></a> <span class="p">}</span>
+<a name="line-155"></a> <span class="p">}</span>
+<a name="line-156"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;House number&quot;</span><span class="p">))</span>
+<a name="line-157"></a> <span class="p">{</span>
+<a name="line-158"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;house_number&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-159"></a> <span class="p">{</span>
+<a name="line-160"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;house_number&quot;</span><span class="p">)];</span>
+<a name="line-161"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{House number}&quot;</span><span class="p">));</span>
+<a name="line-162"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-163"></a> <span class="p">}</span>
+<a name="line-164"></a> <span class="p">}</span>
+<a name="line-165"></a> <span class="k">else</span>
+<a name="line-166"></a> <span class="p">{</span>
+<a name="line-167"></a> <span class="n">returnedAddress</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">indexFBracket</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">indexLBracket</span> <span class="o">-</span> <span class="n">indexFBracket</span> <span class="o">+</span> <span class="mi">2</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
+<a name="line-168"></a>
+<a name="line-169"></a><span class="hll"> <span class="kt">int</span> <span class="n">indexFormatFBracket</span> <span class="o">=</span> <span class="n">auxReturnedFormat</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{&quot;</span><span class="p">));</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-170"></a> <span class="kt">int</span> <span class="n">indexFormatLBracket</span> <span class="o">=</span> <span class="n">auxReturnedFormat</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;}&quot;</span><span class="p">));</span>
+<a name="line-171"></a> <span class="n">auxReturnedFormat</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">indexFormatFBracket</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span>
+<a name="line-172"></a> <span class="n">indexFormatLBracket</span> <span class="o">-</span> <span class="n">indexFormatFBracket</span> <span class="o">+</span> <span class="mi">2</span><span class="p">,</span>
+<a name="line-173"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
+<a name="line-174"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-175"></a> <span class="p">}</span>
+<a name="line-176"></a> <span class="p">}</span>
+<a name="line-177"></a>
+<a name="line-178"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">backendName</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;GeonamesUS&quot;</span><span class="p">))</span>
+<a name="line-179"></a> <span class="p">{</span>
+<a name="line-180"></a>
+<a name="line-181"></a> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span><span class="p">.</span><span class="n">compare</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;LAU2&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-182"></a> <span class="p">{</span>
+<a name="line-183"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;adminName2&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-184"></a> <span class="p">{</span>
+<a name="line-185"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;adminName2&quot;</span><span class="p">)];</span>
+<a name="line-186"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{LAU2}&quot;</span><span class="p">));</span>
+<a name="line-187"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-188"></a> <span class="p">}</span>
+<a name="line-189"></a> <span class="p">}</span>
+<a name="line-190"></a>
+<a name="line-191"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;LAU1&quot;</span><span class="p">))</span>
+<a name="line-192"></a> <span class="p">{</span>
+<a name="line-193"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;adminName1&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-194"></a> <span class="p">{</span>
+<a name="line-195"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;adminName1&quot;</span><span class="p">)];</span>
+<a name="line-196"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{LAU1}&quot;</span><span class="p">));</span>
+<a name="line-197"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-198"></a> <span class="p">}</span>
+<a name="line-199"></a> <span class="p">}</span>
+<a name="line-200"></a>
+<a name="line-201"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;City&quot;</span><span class="p">))</span>
+<a name="line-202"></a> <span class="p">{</span>
+<a name="line-203"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;placename&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-204"></a> <span class="p">{</span>
+<a name="line-205"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;placename&quot;</span><span class="p">)];</span>
+<a name="line-206"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{City}&quot;</span><span class="p">));</span>
+<a name="line-207"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-208"></a> <span class="p">}</span>
+<a name="line-209"></a> <span class="p">}</span>
+<a name="line-210"></a> <span class="k">else</span>
+<a name="line-211"></a> <span class="p">{</span>
+<a name="line-212"></a> <span class="n">returnedAddress</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">indexFBracket</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span>
+<a name="line-213"></a> <span class="n">indexLBracket</span> <span class="o">-</span> <span class="n">indexFBracket</span> <span class="o">+</span> <span class="mi">2</span><span class="p">,</span>
+<a name="line-214"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
+<a name="line-215"></a>
+<a name="line-216"></a><span class="hll"> <span class="kt">int</span> <span class="n">indexFormatFBracket</span> <span class="o">=</span> <span class="n">auxReturnedFormat</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{&quot;</span><span class="p">));</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-217"></a> <span class="kt">int</span> <span class="n">indexFormatLBracket</span> <span class="o">=</span> <span class="n">auxReturnedFormat</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;}&quot;</span><span class="p">));</span>
+<a name="line-218"></a> <span class="n">auxReturnedFormat</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">indexFormatFBracket</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span>
+<a name="line-219"></a> <span class="n">indexFormatLBracket</span> <span class="o">-</span> <span class="n">indexFormatFBracket</span> <span class="o">+</span> <span class="mi">2</span><span class="p">,</span>
+<a name="line-220"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
+<a name="line-221"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-222"></a> <span class="p">}</span>
+<a name="line-223"></a> <span class="p">}</span>
+<a name="line-224"></a>
+<a name="line-225"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">backendName</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Geonames&quot;</span><span class="p">))</span>
+<a name="line-226"></a> <span class="p">{</span>
+<a name="line-227"></a> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span><span class="p">.</span><span class="n">compare</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Country&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-228"></a> <span class="p">{</span>
+<a name="line-229"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;countryName&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-230"></a> <span class="p">{</span>
+<a name="line-231"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;countryName&quot;</span><span class="p">)];</span>
+<a name="line-232"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{Country}&quot;</span><span class="p">));</span>
+<a name="line-233"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-234"></a> <span class="p">}</span>
+<a name="line-235"></a> <span class="p">}</span>
+<a name="line-236"></a>
+<a name="line-237"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Place&quot;</span><span class="p">))</span>
+<a name="line-238"></a> <span class="p">{</span>
+<a name="line-239"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;name&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-240"></a> <span class="p">{</span>
+<a name="line-241"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;name&quot;</span><span class="p">)];</span>
+<a name="line-242"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{Place}&quot;</span><span class="p">));</span>
+<a name="line-243"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-244"></a> <span class="p">}</span>
+<a name="line-245"></a> <span class="p">}</span>
+<a name="line-246"></a> <span class="k">else</span>
+<a name="line-247"></a> <span class="p">{</span>
+<a name="line-248"></a> <span class="n">returnedAddress</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">indexFBracket</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span>
+<a name="line-249"></a> <span class="n">indexLBracket</span> <span class="o">-</span> <span class="n">indexFBracket</span> <span class="o">+</span> <span class="mi">2</span><span class="p">,</span>
+<a name="line-250"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
+<a name="line-251"></a>
+<a name="line-252"></a><span class="hll"> <span class="kt">int</span> <span class="n">indexFormatFBracket</span> <span class="o">=</span> <span class="n">auxReturnedFormat</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{&quot;</span><span class="p">));</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-253"></a> <span class="kt">int</span> <span class="n">indexFormatLBracket</span> <span class="o">=</span> <span class="n">auxReturnedFormat</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;}&quot;</span><span class="p">));</span>
+<a name="line-254"></a> <span class="n">auxReturnedFormat</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">indexFormatFBracket</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span>
+<a name="line-255"></a> <span class="n">indexFormatLBracket</span> <span class="o">-</span> <span class="n">indexFormatFBracket</span> <span class="o">+</span> <span class="mi">2</span><span class="p">,</span>
+<a name="line-256"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
+<a name="line-257"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-258"></a> <span class="p">}</span>
+<a name="line-259"></a> <span class="p">}</span>
+<a name="line-260"></a>
+<a name="line-261"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">dataAdded</span><span class="p">)</span>
+<a name="line-262"></a> <span class="p">{</span>
+<a name="line-263"></a> <span class="n">returnedAddress</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">indexFBracket</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">humanTag</span><span class="p">.</span><span class="n">length</span><span class="p">()</span> <span class="o">+</span> <span class="mi">3</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
+<a name="line-264"></a> <span class="p">}</span>
+<a name="line-265"></a> <span class="k">else</span>
+<a name="line-266"></a> <span class="p">{</span>
+<a name="line-267"></a> <span class="n">returnedAddress</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">indexFBracket</span><span class="p">,</span> <span class="n">humanTag</span><span class="p">.</span><span class="n">length</span><span class="p">()</span> <span class="o">+</span> <span class="mi">2</span><span class="p">,</span> <span class="n">result</span><span class="p">);</span>
+<a name="line-268"></a> <span class="p">}</span>
+<a name="line-269"></a> <span class="p">}</span>
+<a name="line-270"></a>
+<a name="line-271"></a> <span class="n">returnedAddressElements</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">returnedFormat</span><span class="p">);</span>
+<a name="line-272"></a> <span class="n">returnedAddressElements</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">returnedAddress</span><span class="p">);</span>
+<a name="line-273"></a>
+<a name="line-274"></a> <span class="k">return</span> <span class="n">returnedAddressElements</span><span class="p">;</span>
+<a name="line-275"></a><span class="p">}</span>
+<a name="line-276"></a>
+<a name="line-277"></a><span class="p">}</span> <span class="c1">// namespace Digikam</span>
+<a name="line-278"></a>
+<a name="line-279"></a><span class="cp">#endif </span><span class="c1">// DIGIKAM_PARSE_TAG_STRING_H</span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/19.html b/static/reports/cppcheck/master/19.html
index 7567f0c95..7f04ced65 100644
--- a/static/reports/cppcheck/master/19.html
+++ b/static/reports/cppcheck/master/19.html
@@ -1,379 +1,2199 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/tests/mediawiki/logouttest.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/utilities/geolocation/geoiface/reversegeocoding/rgwidget.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> logouttest.cpp</p>
-<a href='19.html#line-95'> shadowVar 95</a><a href='19.html#line-110'> shadowVar 110</a>
+ <p id="filename"><a href="index.html">Defects:</a> rgwidget.cpp</p>
+<a href='19.html#line-516'> shadowVar 516</a><a href='19.html#line-552'> shadowVar 552</a>
</div>
<div id="content">
-<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
-100
-101
-102
-103
-104
-105
-106
-107
-108
-109
-110
-111
-112
-113
-114
-115
-116
-117</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
+<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+ 100
+ 101
+ 102
+ 103
+ 104
+ 105
+ 106
+ 107
+ 108
+ 109
+ 110
+ 111
+ 112
+ 113
+ 114
+ 115
+ 116
+ 117
+ 118
+ 119
+ 120
+ 121
+ 122
+ 123
+ 124
+ 125
+ 126
+ 127
+ 128
+ 129
+ 130
+ 131
+ 132
+ 133
+ 134
+ 135
+ 136
+ 137
+ 138
+ 139
+ 140
+ 141
+ 142
+ 143
+ 144
+ 145
+ 146
+ 147
+ 148
+ 149
+ 150
+ 151
+ 152
+ 153
+ 154
+ 155
+ 156
+ 157
+ 158
+ 159
+ 160
+ 161
+ 162
+ 163
+ 164
+ 165
+ 166
+ 167
+ 168
+ 169
+ 170
+ 171
+ 172
+ 173
+ 174
+ 175
+ 176
+ 177
+ 178
+ 179
+ 180
+ 181
+ 182
+ 183
+ 184
+ 185
+ 186
+ 187
+ 188
+ 189
+ 190
+ 191
+ 192
+ 193
+ 194
+ 195
+ 196
+ 197
+ 198
+ 199
+ 200
+ 201
+ 202
+ 203
+ 204
+ 205
+ 206
+ 207
+ 208
+ 209
+ 210
+ 211
+ 212
+ 213
+ 214
+ 215
+ 216
+ 217
+ 218
+ 219
+ 220
+ 221
+ 222
+ 223
+ 224
+ 225
+ 226
+ 227
+ 228
+ 229
+ 230
+ 231
+ 232
+ 233
+ 234
+ 235
+ 236
+ 237
+ 238
+ 239
+ 240
+ 241
+ 242
+ 243
+ 244
+ 245
+ 246
+ 247
+ 248
+ 249
+ 250
+ 251
+ 252
+ 253
+ 254
+ 255
+ 256
+ 257
+ 258
+ 259
+ 260
+ 261
+ 262
+ 263
+ 264
+ 265
+ 266
+ 267
+ 268
+ 269
+ 270
+ 271
+ 272
+ 273
+ 274
+ 275
+ 276
+ 277
+ 278
+ 279
+ 280
+ 281
+ 282
+ 283
+ 284
+ 285
+ 286
+ 287
+ 288
+ 289
+ 290
+ 291
+ 292
+ 293
+ 294
+ 295
+ 296
+ 297
+ 298
+ 299
+ 300
+ 301
+ 302
+ 303
+ 304
+ 305
+ 306
+ 307
+ 308
+ 309
+ 310
+ 311
+ 312
+ 313
+ 314
+ 315
+ 316
+ 317
+ 318
+ 319
+ 320
+ 321
+ 322
+ 323
+ 324
+ 325
+ 326
+ 327
+ 328
+ 329
+ 330
+ 331
+ 332
+ 333
+ 334
+ 335
+ 336
+ 337
+ 338
+ 339
+ 340
+ 341
+ 342
+ 343
+ 344
+ 345
+ 346
+ 347
+ 348
+ 349
+ 350
+ 351
+ 352
+ 353
+ 354
+ 355
+ 356
+ 357
+ 358
+ 359
+ 360
+ 361
+ 362
+ 363
+ 364
+ 365
+ 366
+ 367
+ 368
+ 369
+ 370
+ 371
+ 372
+ 373
+ 374
+ 375
+ 376
+ 377
+ 378
+ 379
+ 380
+ 381
+ 382
+ 383
+ 384
+ 385
+ 386
+ 387
+ 388
+ 389
+ 390
+ 391
+ 392
+ 393
+ 394
+ 395
+ 396
+ 397
+ 398
+ 399
+ 400
+ 401
+ 402
+ 403
+ 404
+ 405
+ 406
+ 407
+ 408
+ 409
+ 410
+ 411
+ 412
+ 413
+ 414
+ 415
+ 416
+ 417
+ 418
+ 419
+ 420
+ 421
+ 422
+ 423
+ 424
+ 425
+ 426
+ 427
+ 428
+ 429
+ 430
+ 431
+ 432
+ 433
+ 434
+ 435
+ 436
+ 437
+ 438
+ 439
+ 440
+ 441
+ 442
+ 443
+ 444
+ 445
+ 446
+ 447
+ 448
+ 449
+ 450
+ 451
+ 452
+ 453
+ 454
+ 455
+ 456
+ 457
+ 458
+ 459
+ 460
+ 461
+ 462
+ 463
+ 464
+ 465
+ 466
+ 467
+ 468
+ 469
+ 470
+ 471
+ 472
+ 473
+ 474
+ 475
+ 476
+ 477
+ 478
+ 479
+ 480
+ 481
+ 482
+ 483
+ 484
+ 485
+ 486
+ 487
+ 488
+ 489
+ 490
+ 491
+ 492
+ 493
+ 494
+ 495
+ 496
+ 497
+ 498
+ 499
+ 500
+ 501
+ 502
+ 503
+ 504
+ 505
+ 506
+ 507
+ 508
+ 509
+ 510
+ 511
+ 512
+ 513
+ 514
+ 515
+ 516
+ 517
+ 518
+ 519
+ 520
+ 521
+ 522
+ 523
+ 524
+ 525
+ 526
+ 527
+ 528
+ 529
+ 530
+ 531
+ 532
+ 533
+ 534
+ 535
+ 536
+ 537
+ 538
+ 539
+ 540
+ 541
+ 542
+ 543
+ 544
+ 545
+ 546
+ 547
+ 548
+ 549
+ 550
+ 551
+ 552
+ 553
+ 554
+ 555
+ 556
+ 557
+ 558
+ 559
+ 560
+ 561
+ 562
+ 563
+ 564
+ 565
+ 566
+ 567
+ 568
+ 569
+ 570
+ 571
+ 572
+ 573
+ 574
+ 575
+ 576
+ 577
+ 578
+ 579
+ 580
+ 581
+ 582
+ 583
+ 584
+ 585
+ 586
+ 587
+ 588
+ 589
+ 590
+ 591
+ 592
+ 593
+ 594
+ 595
+ 596
+ 597
+ 598
+ 599
+ 600
+ 601
+ 602
+ 603
+ 604
+ 605
+ 606
+ 607
+ 608
+ 609
+ 610
+ 611
+ 612
+ 613
+ 614
+ 615
+ 616
+ 617
+ 618
+ 619
+ 620
+ 621
+ 622
+ 623
+ 624
+ 625
+ 626
+ 627
+ 628
+ 629
+ 630
+ 631
+ 632
+ 633
+ 634
+ 635
+ 636
+ 637
+ 638
+ 639
+ 640
+ 641
+ 642
+ 643
+ 644
+ 645
+ 646
+ 647
+ 648
+ 649
+ 650
+ 651
+ 652
+ 653
+ 654
+ 655
+ 656
+ 657
+ 658
+ 659
+ 660
+ 661
+ 662
+ 663
+ 664
+ 665
+ 666
+ 667
+ 668
+ 669
+ 670
+ 671
+ 672
+ 673
+ 674
+ 675
+ 676
+ 677
+ 678
+ 679
+ 680
+ 681
+ 682
+ 683
+ 684
+ 685
+ 686
+ 687
+ 688
+ 689
+ 690
+ 691
+ 692
+ 693
+ 694
+ 695
+ 696
+ 697
+ 698
+ 699
+ 700
+ 701
+ 702
+ 703
+ 704
+ 705
+ 706
+ 707
+ 708
+ 709
+ 710
+ 711
+ 712
+ 713
+ 714
+ 715
+ 716
+ 717
+ 718
+ 719
+ 720
+ 721
+ 722
+ 723
+ 724
+ 725
+ 726
+ 727
+ 728
+ 729
+ 730
+ 731
+ 732
+ 733
+ 734
+ 735
+ 736
+ 737
+ 738
+ 739
+ 740
+ 741
+ 742
+ 743
+ 744
+ 745
+ 746
+ 747
+ 748
+ 749
+ 750
+ 751
+ 752
+ 753
+ 754
+ 755
+ 756
+ 757
+ 758
+ 759
+ 760
+ 761
+ 762
+ 763
+ 764
+ 765
+ 766
+ 767
+ 768
+ 769
+ 770
+ 771
+ 772
+ 773
+ 774
+ 775
+ 776
+ 777
+ 778
+ 779
+ 780
+ 781
+ 782
+ 783
+ 784
+ 785
+ 786
+ 787
+ 788
+ 789
+ 790
+ 791
+ 792
+ 793
+ 794
+ 795
+ 796
+ 797
+ 798
+ 799
+ 800
+ 801
+ 802
+ 803
+ 804
+ 805
+ 806
+ 807
+ 808
+ 809
+ 810
+ 811
+ 812
+ 813
+ 814
+ 815
+ 816
+ 817
+ 818
+ 819
+ 820
+ 821
+ 822
+ 823
+ 824
+ 825
+ 826
+ 827
+ 828
+ 829
+ 830
+ 831
+ 832
+ 833
+ 834
+ 835
+ 836
+ 837
+ 838
+ 839
+ 840
+ 841
+ 842
+ 843
+ 844
+ 845
+ 846
+ 847
+ 848
+ 849
+ 850
+ 851
+ 852
+ 853
+ 854
+ 855
+ 856
+ 857
+ 858
+ 859
+ 860
+ 861
+ 862
+ 863
+ 864
+ 865
+ 866
+ 867
+ 868
+ 869
+ 870
+ 871
+ 872
+ 873
+ 874
+ 875
+ 876
+ 877
+ 878
+ 879
+ 880
+ 881
+ 882
+ 883
+ 884
+ 885
+ 886
+ 887
+ 888
+ 889
+ 890
+ 891
+ 892
+ 893
+ 894
+ 895
+ 896
+ 897
+ 898
+ 899
+ 900
+ 901
+ 902
+ 903
+ 904
+ 905
+ 906
+ 907
+ 908
+ 909
+ 910
+ 911
+ 912
+ 913
+ 914
+ 915
+ 916
+ 917
+ 918
+ 919
+ 920
+ 921
+ 922
+ 923
+ 924
+ 925
+ 926
+ 927
+ 928
+ 929
+ 930
+ 931
+ 932
+ 933
+ 934
+ 935
+ 936
+ 937
+ 938
+ 939
+ 940
+ 941
+ 942
+ 943
+ 944
+ 945
+ 946
+ 947
+ 948
+ 949
+ 950
+ 951
+ 952
+ 953
+ 954
+ 955
+ 956
+ 957
+ 958
+ 959
+ 960
+ 961
+ 962
+ 963
+ 964
+ 965
+ 966
+ 967
+ 968
+ 969
+ 970
+ 971
+ 972
+ 973
+ 974
+ 975
+ 976
+ 977
+ 978
+ 979
+ 980
+ 981
+ 982
+ 983
+ 984
+ 985
+ 986
+ 987
+ 988
+ 989
+ 990
+ 991
+ 992
+ 993
+ 994
+ 995
+ 996
+ 997
+ 998
+ 999
+1000
+1001
+1002
+1003
+1004
+1005
+1006
+1007
+1008
+1009
+1010
+1011
+1012
+1013
+1014
+1015
+1016
+1017
+1018
+1019
+1020
+1021
+1022
+1023
+1024
+1025
+1026
+1027</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
-<a name="line-6"></a><span class="cm"> * Date : 2011-03-22</span>
-<a name="line-7"></a><span class="cm"> * Description : a MediaWiki C++ interface</span>
+<a name="line-6"></a><span class="cm"> * Date : 2010-05-12</span>
+<a name="line-7"></a><span class="cm"> * Description : A widget to apply Reverse Geocoding</span>
<a name="line-8"></a><span class="cm"> *</span>
-<a name="line-9"></a><span class="cm"> * Copyright (C) 2011-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&gt;</span>
-<a name="line-10"></a><span class="cm"> * Copyright (C) 2011 by Alexandre Mendes &lt;alex dot mendes1988 at gmail dot com&gt;</span>
-<a name="line-11"></a><span class="cm"> * Copyright (C) 2011 by Hormiere Guillaume &lt;hormiere dot guillaume at gmail dot com&gt;</span>
-<a name="line-12"></a><span class="cm"> * Copyright (C) 2011 by Manuel Campomanes &lt;campomanes dot manuel at gmail dot com&gt;</span>
-<a name="line-13"></a><span class="cm"> *</span>
-<a name="line-14"></a><span class="cm"> * This program is free software; you can redistribute it</span>
-<a name="line-15"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
-<a name="line-16"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
-<a name="line-17"></a><span class="cm"> * either version 2, or (at your option) any later version.</span>
-<a name="line-18"></a><span class="cm"> *</span>
-<a name="line-19"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
-<a name="line-20"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
-<a name="line-21"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
-<a name="line-22"></a><span class="cm"> * GNU General Public License for more details.</span>
-<a name="line-23"></a><span class="cm"> *</span>
-<a name="line-24"></a><span class="cm"> * ============================================================ */</span>
-<a name="line-25"></a>
-<a name="line-26"></a><span class="c1">// Qt includes</span>
-<a name="line-27"></a>
-<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;QObject&gt;</span><span class="cp"></span>
-<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QtTest&gt;</span><span class="cp"></span>
-<a name="line-30"></a>
-<a name="line-31"></a><span class="c1">// KDE includes</span>
-<a name="line-32"></a>
-<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;kjob.h&gt;</span><span class="cp"></span>
-<a name="line-34"></a>
-<a name="line-35"></a><span class="c1">// Local includes</span>
-<a name="line-36"></a>
-<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&quot;mediawiki_iface.h&quot;</span><span class="cp"></span>
-<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&quot;mediawiki_logout.h&quot;</span><span class="cp"></span>
-<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&quot;fakeserver/fakeserver.h&quot;</span><span class="cp"></span>
-<a name="line-40"></a>
-<a name="line-41"></a><span class="k">using</span> <span class="n">MediaWiki</span><span class="o">::</span><span class="n">Iface</span><span class="p">;</span>
-<a name="line-42"></a><span class="k">using</span> <span class="n">MediaWiki</span><span class="o">::</span><span class="n">Logout</span><span class="p">;</span>
-<a name="line-43"></a>
-<a name="line-44"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="nl">LogoutTest</span> <span class="p">:</span> <span class="k">public</span> <span class="n">QObject</span>
-<a name="line-45"></a><span class="p">{</span>
-<a name="line-46"></a> <span class="n">Q_OBJECT</span>
+<a name="line-9"></a><span class="cm"> * Copyright (C) 2010 by Michael G. Hansen &lt;mike at mghansen dot de&gt;</span>
+<a name="line-10"></a><span class="cm"> * Copyright (C) 2010 by Gabriel Voicu &lt;ping dot gabi at gmail dot com&gt;</span>
+<a name="line-11"></a><span class="cm"> *</span>
+<a name="line-12"></a><span class="cm"> * This program is free software; you can redistribute it</span>
+<a name="line-13"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
+<a name="line-14"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
+<a name="line-15"></a><span class="cm"> * either version 2, or (at your option)</span>
+<a name="line-16"></a><span class="cm"> * any later version.</span>
+<a name="line-17"></a><span class="cm"> *</span>
+<a name="line-18"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
+<a name="line-19"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
+<a name="line-20"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
+<a name="line-21"></a><span class="cm"> * GNU General Public License for more details.</span>
+<a name="line-22"></a><span class="cm"> *</span>
+<a name="line-23"></a><span class="cm"> * ============================================================ */</span>
+<a name="line-24"></a>
+<a name="line-25"></a><span class="cp">#include</span> <span class="cpf">&quot;rgwidget.h&quot;</span><span class="cp"></span>
+<a name="line-26"></a>
+<a name="line-27"></a><span class="c1">// Qt includes</span>
+<a name="line-28"></a>
+<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QCheckBox&gt;</span><span class="cp"></span>
+<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QContextMenuEvent&gt;</span><span class="cp"></span>
+<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QHBoxLayout&gt;</span><span class="cp"></span>
+<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QLabel&gt;</span><span class="cp"></span>
+<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QLineEdit&gt;</span><span class="cp"></span>
+<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QList&gt;</span><span class="cp"></span>
+<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QMap&gt;</span><span class="cp"></span>
+<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QPointer&gt;</span><span class="cp"></span>
+<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&lt;QPushButton&gt;</span><span class="cp"></span>
+<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&lt;QTreeView&gt;</span><span class="cp"></span>
+<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&lt;QVBoxLayout&gt;</span><span class="cp"></span>
+<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&lt;QMenu&gt;</span><span class="cp"></span>
+<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&lt;QUrl&gt;</span><span class="cp"></span>
+<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&lt;QInputDialog&gt;</span><span class="cp"></span>
+<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&lt;QAction&gt;</span><span class="cp"></span>
+<a name="line-44"></a><span class="cp">#include</span> <span class="cpf">&lt;QComboBox&gt;</span><span class="cp"></span>
+<a name="line-45"></a><span class="cp">#include</span> <span class="cpf">&lt;QApplication&gt;</span><span class="cp"></span>
+<a name="line-46"></a><span class="cp">#include</span> <span class="cpf">&lt;QMessageBox&gt;</span><span class="cp"></span>
<a name="line-47"></a>
-<a name="line-48"></a><span class="k">public</span><span class="o">:</span>
+<a name="line-48"></a><span class="c1">// KDE includes</span>
<a name="line-49"></a>
-<a name="line-50"></a> <span class="n">LogoutTest</span><span class="p">()</span>
-<a name="line-51"></a> <span class="p">{</span>
-<a name="line-52"></a> <span class="n">logoutCount</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-53"></a> <span class="n">m_mediaWiki</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-54"></a> <span class="n">m_server</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-55"></a> <span class="p">}</span>
-<a name="line-56"></a>
-<a name="line-57"></a><span class="k">public</span> <span class="nl">Q_SLOTS</span><span class="p">:</span>
-<a name="line-58"></a>
-<a name="line-59"></a> <span class="kt">void</span> <span class="n">logoutHandle</span><span class="p">(</span><span class="n">KJob</span><span class="o">*</span> <span class="n">job</span><span class="p">)</span>
-<a name="line-60"></a> <span class="p">{</span>
-<a name="line-61"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">job</span><span class="p">)</span>
-<a name="line-62"></a> <span class="n">logoutCount</span><span class="o">++</span><span class="p">;</span>
-<a name="line-63"></a> <span class="p">}</span>
-<a name="line-64"></a>
-<a name="line-65"></a><span class="k">private</span> <span class="nl">Q_SLOTS</span><span class="p">:</span>
-<a name="line-66"></a>
-<a name="line-67"></a> <span class="kt">void</span> <span class="n">initTestCase</span><span class="p">()</span>
-<a name="line-68"></a> <span class="p">{</span>
-<a name="line-69"></a> <span class="n">logoutCount</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-70"></a> <span class="k">this</span><span class="o">-&gt;</span><span class="n">m_mediaWiki</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Iface</span><span class="p">(</span><span class="n">QUrl</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;http://127.0.0.1:12566&quot;</span><span class="p">)));</span>
-<a name="line-71"></a> <span class="k">this</span><span class="o">-&gt;</span><span class="n">m_server</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FakeServer</span><span class="p">;</span>
-<a name="line-72"></a> <span class="k">this</span><span class="o">-&gt;</span><span class="n">request</span> <span class="o">=</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;/?format=xml&amp;action=logout&quot;</span><span class="p">);</span>
-<a name="line-73"></a> <span class="p">}</span>
+<a name="line-50"></a><span class="cp">#include</span> <span class="cpf">&lt;kconfiggroup.h&gt;</span><span class="cp"></span>
+<a name="line-51"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
+<a name="line-52"></a>
+<a name="line-53"></a><span class="c1">// local includes</span>
+<a name="line-54"></a>
+<a name="line-55"></a><span class="cp">#include</span> <span class="cpf">&quot;geoifacetypes.h&quot;</span><span class="cp"></span>
+<a name="line-56"></a><span class="cp">#include</span> <span class="cpf">&quot;dlayoutbox.h&quot;</span><span class="cp"></span>
+<a name="line-57"></a><span class="cp">#include</span> <span class="cpf">&quot;gpsundocommand.h&quot;</span><span class="cp"></span>
+<a name="line-58"></a><span class="cp">#include</span> <span class="cpf">&quot;geolocationedit.h&quot;</span><span class="cp"></span>
+<a name="line-59"></a><span class="cp">#include</span> <span class="cpf">&quot;gpsitemmodel.h&quot;</span><span class="cp"></span>
+<a name="line-60"></a><span class="cp">#include</span> <span class="cpf">&quot;gpsitemcontainer.h&quot;</span><span class="cp"></span>
+<a name="line-61"></a><span class="cp">#include</span> <span class="cpf">&quot;backend-geonames-rg.h&quot;</span><span class="cp"></span>
+<a name="line-62"></a><span class="cp">#include</span> <span class="cpf">&quot;backend-osm-rg.h&quot;</span><span class="cp"></span>
+<a name="line-63"></a><span class="cp">#include</span> <span class="cpf">&quot;backend-geonamesUS-rg.h&quot;</span><span class="cp"></span>
+<a name="line-64"></a><span class="cp">#include</span> <span class="cpf">&quot;parsetagstring.h&quot;</span><span class="cp"></span>
+<a name="line-65"></a><span class="cp">#include</span> <span class="cpf">&quot;rgtagmodel.h&quot;</span><span class="cp"></span>
+<a name="line-66"></a><span class="cp">#include</span> <span class="cpf">&quot;simpletreemodel.h&quot;</span><span class="cp"></span>
+<a name="line-67"></a><span class="cp">#include</span> <span class="cpf">&quot;dmessagebox.h&quot;</span><span class="cp"></span>
+<a name="line-68"></a><span class="cp">#include</span> <span class="cpf">&quot;dexpanderbox.h&quot;</span><span class="cp"></span>
+<a name="line-69"></a><span class="cp">#include</span> <span class="cpf">&quot;dmetadata.h&quot;</span><span class="cp"></span>
+<a name="line-70"></a>
+<a name="line-71"></a><span class="cp">#ifdef GPSSYNC_MODELTEST</span>
+<a name="line-72"></a><span class="cp"># include &lt;modeltest.h&gt;</span>
+<a name="line-73"></a><span class="cp">#endif </span><span class="c1">// GPSSYNC_MODELTEST</span>
<a name="line-74"></a>
-<a name="line-75"></a> <span class="kt">void</span> <span class="n">logoutTestConnectTrue</span><span class="p">()</span>
-<a name="line-76"></a> <span class="p">{</span>
-<a name="line-77"></a> <span class="n">QString</span> <span class="n">senario</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;&lt;api /&gt;&quot;</span><span class="p">)</span> <span class="p">);</span>
-<a name="line-78"></a> <span class="n">QString</span> <span class="nf">cookie</span><span class="p">(</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;cookieprefix=</span><span class="se">\&quot;</span><span class="s">enwiki</span><span class="se">\&quot;</span><span class="s"> sessionid=</span><span class="se">\&quot;</span><span class="s">17ab96bd8ffbe8ca58a78657a918558e</span><span class="se">\&quot;</span><span class="s"> expires=</span><span class="se">\&quot;</span><span class="s">Sat, 12-Feb-2011 21:39:30 GMT</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">));</span>
-<a name="line-79"></a> <span class="n">m_server</span><span class="o">-&gt;</span><span class="n">setScenario</span><span class="p">(</span><span class="n">senario</span><span class="p">,</span> <span class="n">cookie</span><span class="p">);</span>
-<a name="line-80"></a> <span class="n">m_server</span><span class="o">-&gt;</span><span class="n">startAndWait</span><span class="p">();</span>
-<a name="line-81"></a>
-<a name="line-82"></a> <span class="n">logoutCount</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-83"></a> <span class="n">Logout</span> <span class="nf">logout</span><span class="p">(</span><span class="o">*</span><span class="n">m_mediaWiki</span><span class="p">);</span>
-<a name="line-84"></a>
-<a name="line-85"></a> <span class="n">connect</span><span class="p">(</span><span class="o">&amp;</span><span class="n">logout</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">result</span><span class="p">(</span><span class="n">KJob</span><span class="o">*</span><span class="p">)),</span>
-<a name="line-86"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">logoutHandle</span><span class="p">(</span><span class="n">KJob</span><span class="o">*</span><span class="p">)));</span>
+<a name="line-75"></a><span class="k">namespace</span> <span class="n">Digikam</span>
+<a name="line-76"></a><span class="p">{</span>
+<a name="line-77"></a>
+<a name="line-78"></a><span class="cm">/**</span>
+<a name="line-79"></a><span class="cm"> * @class RGWidget</span>
+<a name="line-80"></a><span class="cm"> *</span>
+<a name="line-81"></a><span class="cm"> * @brief The RGWidget class represents the main widget for reverse geocoding.</span>
+<a name="line-82"></a><span class="cm"> */</span>
+<a name="line-83"></a>
+<a name="line-84"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">Private</span>
+<a name="line-85"></a><span class="p">{</span>
+<a name="line-86"></a><span class="k">public</span><span class="o">:</span>
<a name="line-87"></a>
-<a name="line-88"></a> <span class="n">logout</span><span class="p">.</span><span class="n">exec</span><span class="p">();</span> <span class="c1">// krazy:exclude=crashy</span>
-<a name="line-89"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="k">this</span><span class="o">-&gt;</span><span class="n">logoutCount</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-90"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">logout</span><span class="p">.</span><span class="n">error</span><span class="p">(),</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">Logout</span><span class="o">::</span><span class="n">NoError</span><span class="p">);</span>
-<a name="line-91"></a>
-<a name="line-92"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">FakeServer</span><span class="o">::</span><span class="n">Request</span><span class="o">&gt;</span> <span class="n">requests</span> <span class="o">=</span> <span class="n">m_server</span><span class="o">-&gt;</span><span class="n">getRequest</span><span class="p">();</span>
-<a name="line-93"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">requests</span><span class="p">.</span><span class="n">size</span><span class="p">(),</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-94"></a>
-<a name="line-95"></a><span class="hll"> <span class="n">FakeServer</span><span class="o">::</span><span class="n">Request</span> <span class="n">request</span> <span class="o">=</span> <span class="n">requests</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-96"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">request</span><span class="p">.</span><span class="n">agent</span><span class="p">,</span> <span class="n">m_mediaWiki</span><span class="o">-&gt;</span><span class="n">userAgent</span><span class="p">());</span>
-<a name="line-97"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">request</span><span class="p">.</span><span class="n">type</span><span class="p">,</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;GET&quot;</span><span class="p">));</span>
-<a name="line-98"></a> <span class="n">QCOMPARE</span><span class="p">(</span><span class="n">request</span><span class="p">.</span><span class="n">value</span><span class="p">,</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;/?format=xml&amp;action=logout&quot;</span><span class="p">));</span>
-<a name="line-99"></a> <span class="p">}</span>
-<a name="line-100"></a>
-<a name="line-101"></a> <span class="kt">void</span> <span class="n">cleanupTestCase</span><span class="p">()</span>
-<a name="line-102"></a> <span class="p">{</span>
-<a name="line-103"></a> <span class="k">delete</span> <span class="k">this</span><span class="o">-&gt;</span><span class="n">m_mediaWiki</span><span class="p">;</span>
-<a name="line-104"></a> <span class="k">delete</span> <span class="k">this</span><span class="o">-&gt;</span><span class="n">m_server</span><span class="p">;</span>
-<a name="line-105"></a> <span class="p">}</span>
-<a name="line-106"></a>
-<a name="line-107"></a><span class="k">private</span><span class="o">:</span>
-<a name="line-108"></a>
-<a name="line-109"></a> <span class="kt">int</span> <span class="n">logoutCount</span><span class="p">;</span>
-<a name="line-110"></a><span class="hll"> <span class="n">QString</span> <span class="n">request</span><span class="p">;</span><span class='error2'>&lt;--- Shadowed declaration</span>
-</span><a name="line-111"></a> <span class="n">Iface</span><span class="o">*</span> <span class="n">m_mediaWiki</span><span class="p">;</span>
-<a name="line-112"></a> <span class="n">FakeServer</span><span class="o">*</span> <span class="n">m_server</span><span class="p">;</span>
-<a name="line-113"></a><span class="p">};</span>
-<a name="line-114"></a>
-<a name="line-115"></a><span class="n">QTEST_MAIN</span><span class="p">(</span><span class="n">LogoutTest</span><span class="p">)</span>
-<a name="line-116"></a>
-<a name="line-117"></a><span class="cp">#include</span> <span class="cpf">&quot;logouttest.moc&quot;</span><span class="cp"></span>
+<a name="line-88"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
+<a name="line-89"></a> <span class="o">:</span> <span class="n">currentlyAskingCancelQuestion</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
+<a name="line-90"></a> <span class="n">hideOptions</span><span class="p">(</span><span class="nb">true</span><span class="p">),</span>
+<a name="line-91"></a> <span class="n">UIEnabled</span><span class="p">(</span><span class="nb">true</span><span class="p">),</span>
+<a name="line-92"></a> <span class="n">label</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-93"></a> <span class="n">imageModel</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-94"></a> <span class="n">selectionModel</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-95"></a> <span class="n">buttonRGSelected</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-96"></a> <span class="n">undoCommand</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-97"></a> <span class="n">serviceComboBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-98"></a> <span class="n">languageEdit</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-99"></a> <span class="n">currentBackend</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-100"></a> <span class="n">requestedRGCount</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
+<a name="line-101"></a> <span class="n">receivedRGCount</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
+<a name="line-102"></a> <span class="n">buttonHideOptions</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-103"></a> <span class="n">iptc</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-104"></a> <span class="n">xmpLoc</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-105"></a> <span class="n">xmpKey</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-106"></a> <span class="n">UGridContainer</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-107"></a> <span class="n">LGridContainer</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-108"></a> <span class="n">serviceLabel</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-109"></a> <span class="n">languageLabel</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-110"></a> <span class="n">separator</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-111"></a> <span class="n">tagModel</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-112"></a> <span class="n">tagTreeView</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-113"></a> <span class="n">tagSelectionModel</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-114"></a> <span class="n">actionAddCountry</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-115"></a> <span class="n">actionAddState</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-116"></a> <span class="n">actionAddStateDistrict</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-117"></a> <span class="n">actionAddCounty</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-118"></a> <span class="n">actionAddCity</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-119"></a> <span class="n">actionAddCityDistrict</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-120"></a> <span class="n">actionAddSuburb</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-121"></a> <span class="n">actionAddTown</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-122"></a> <span class="n">actionAddVillage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-123"></a> <span class="n">actionAddHamlet</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-124"></a> <span class="n">actionAddStreet</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-125"></a> <span class="n">actionAddHouseNumber</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-126"></a> <span class="n">actionAddPlace</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-127"></a> <span class="n">actionAddLAU2</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-128"></a> <span class="n">actionAddLAU1</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-129"></a> <span class="n">actionAddCustomizedSpacer</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-130"></a> <span class="n">actionRemoveTag</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-131"></a> <span class="n">actionRemoveAllSpacers</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-132"></a> <span class="n">actionAddAllAddressElementsToTag</span><span class="p">(</span><span class="k">nullptr</span><span class="p">)</span>
+<a name="line-133"></a> <span class="p">{</span>
+<a name="line-134"></a> <span class="p">}</span>
+<a name="line-135"></a>
+<a name="line-136"></a> <span class="kt">bool</span> <span class="n">currentlyAskingCancelQuestion</span><span class="p">;</span>
+<a name="line-137"></a> <span class="kt">bool</span> <span class="n">hideOptions</span><span class="p">;</span>
+<a name="line-138"></a> <span class="kt">bool</span> <span class="n">UIEnabled</span><span class="p">;</span>
+<a name="line-139"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="n">label</span><span class="p">;</span>
+<a name="line-140"></a> <span class="n">GPSItemModel</span><span class="o">*</span> <span class="n">imageModel</span><span class="p">;</span>
+<a name="line-141"></a> <span class="n">QItemSelectionModel</span><span class="o">*</span> <span class="n">selectionModel</span><span class="p">;</span>
+<a name="line-142"></a> <span class="n">QPushButton</span><span class="o">*</span> <span class="n">buttonRGSelected</span><span class="p">;</span>
+<a name="line-143"></a>
+<a name="line-144"></a> <span class="n">GPSUndoCommand</span><span class="o">*</span> <span class="n">undoCommand</span><span class="p">;</span>
+<a name="line-145"></a> <span class="n">QModelIndex</span> <span class="n">currentTagTreeIndex</span><span class="p">;</span>
+<a name="line-146"></a>
+<a name="line-147"></a> <span class="n">QComboBox</span><span class="o">*</span> <span class="n">serviceComboBox</span><span class="p">;</span>
+<a name="line-148"></a> <span class="n">QComboBox</span><span class="o">*</span> <span class="n">languageEdit</span><span class="p">;</span>
+<a name="line-149"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">RGInfo</span><span class="o">&gt;</span> <span class="n">photoList</span><span class="p">;</span>
+<a name="line-150"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">RGBackend</span><span class="o">*&gt;</span> <span class="n">backendRGList</span><span class="p">;</span>
+<a name="line-151"></a> <span class="n">RGBackend</span><span class="o">*</span> <span class="n">currentBackend</span><span class="p">;</span>
+<a name="line-152"></a> <span class="kt">int</span> <span class="n">requestedRGCount</span><span class="p">;</span>
+<a name="line-153"></a> <span class="kt">int</span> <span class="n">receivedRGCount</span><span class="p">;</span>
+<a name="line-154"></a> <span class="n">QPushButton</span><span class="o">*</span> <span class="n">buttonHideOptions</span><span class="p">;</span>
+<a name="line-155"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">iptc</span><span class="p">;</span>
+<a name="line-156"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">xmpLoc</span><span class="p">;</span>
+<a name="line-157"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">xmpKey</span><span class="p">;</span>
+<a name="line-158"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="n">UGridContainer</span><span class="p">;</span>
+<a name="line-159"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="n">LGridContainer</span><span class="p">;</span>
+<a name="line-160"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="n">serviceLabel</span><span class="p">;</span>
+<a name="line-161"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="n">languageLabel</span><span class="p">;</span>
+<a name="line-162"></a> <span class="n">DLineWidget</span><span class="o">*</span> <span class="n">separator</span><span class="p">;</span>
+<a name="line-163"></a>
+<a name="line-164"></a> <span class="n">RGTagModel</span><span class="o">*</span> <span class="n">tagModel</span><span class="p">;</span>
+<a name="line-165"></a> <span class="n">QTreeView</span><span class="o">*</span> <span class="n">tagTreeView</span><span class="p">;</span>
+<a name="line-166"></a>
+<a name="line-167"></a> <span class="n">QItemSelectionModel</span><span class="o">*</span> <span class="n">tagSelectionModel</span><span class="p">;</span>
+<a name="line-168"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddCountry</span><span class="p">;</span>
+<a name="line-169"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddState</span><span class="p">;</span>
+<a name="line-170"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddStateDistrict</span><span class="p">;</span>
+<a name="line-171"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddCounty</span><span class="p">;</span>
+<a name="line-172"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddCity</span><span class="p">;</span>
+<a name="line-173"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddCityDistrict</span><span class="p">;</span>
+<a name="line-174"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddSuburb</span><span class="p">;</span>
+<a name="line-175"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddTown</span><span class="p">;</span>
+<a name="line-176"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddVillage</span><span class="p">;</span>
+<a name="line-177"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddHamlet</span><span class="p">;</span>
+<a name="line-178"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddStreet</span><span class="p">;</span>
+<a name="line-179"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddHouseNumber</span><span class="p">;</span>
+<a name="line-180"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddPlace</span><span class="p">;</span>
+<a name="line-181"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddLAU2</span><span class="p">;</span>
+<a name="line-182"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddLAU1</span><span class="p">;</span>
+<a name="line-183"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddCustomizedSpacer</span><span class="p">;</span>
+<a name="line-184"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionRemoveTag</span><span class="p">;</span>
+<a name="line-185"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionRemoveAllSpacers</span><span class="p">;</span>
+<a name="line-186"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddAllAddressElementsToTag</span><span class="p">;</span>
+<a name="line-187"></a><span class="p">};</span>
+<a name="line-188"></a>
+<a name="line-189"></a><span class="cm">/**</span>
+<a name="line-190"></a><span class="cm"> * Constructor</span>
+<a name="line-191"></a><span class="cm"> * @param imageModel image model</span>
+<a name="line-192"></a><span class="cm"> * @param selectionModel image selection model</span>
+<a name="line-193"></a><span class="cm"> * @param parent The parent object</span>
+<a name="line-194"></a><span class="cm"> */</span>
+<a name="line-195"></a><span class="n">RGWidget</span><span class="o">::</span><span class="n">RGWidget</span><span class="p">(</span><span class="n">GPSItemModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">imageModel</span><span class="p">,</span> <span class="n">QItemSelectionModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">selectionModel</span><span class="p">,</span>
+<a name="line-196"></a> <span class="n">QAbstractItemModel</span><span class="o">*</span> <span class="n">externTagModel</span><span class="p">,</span> <span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span><span class="p">)</span>
+<a name="line-197"></a> <span class="o">:</span> <span class="n">QWidget</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span>
+<a name="line-198"></a> <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">Private</span><span class="p">())</span>
+<a name="line-199"></a><span class="p">{</span>
+<a name="line-200"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span> <span class="o">=</span> <span class="n">imageModel</span><span class="p">;</span>
+<a name="line-201"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span> <span class="o">=</span> <span class="n">selectionModel</span><span class="p">;</span>
+<a name="line-202"></a>
+<a name="line-203"></a> <span class="c1">// we need to have a main layout and add QVBoxLayout</span>
+<a name="line-204"></a>
+<a name="line-205"></a> <span class="n">QVBoxLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">vBoxLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QVBoxLayout</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
+<a name="line-206"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">UGridContainer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QWidget</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
+<a name="line-207"></a>
+<a name="line-208"></a> <span class="n">vBoxLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">UGridContainer</span><span class="p">);</span>
+<a name="line-209"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QTreeView</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
+<a name="line-210"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span><span class="o">-&gt;</span><span class="n">setHeaderHidden</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-211"></a> <span class="n">vBoxLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span><span class="p">);</span>
+<a name="line-212"></a>
+<a name="line-213"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span> <span class="o">!=</span> <span class="k">nullptr</span><span class="p">);</span>
+<a name="line-214"></a>
+<a name="line-215"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">externTagModel</span><span class="p">)</span>
+<a name="line-216"></a> <span class="p">{</span>
+<a name="line-217"></a> <span class="n">externTagModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SimpleTreeModel</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-218"></a> <span class="p">}</span>
+<a name="line-219"></a>
+<a name="line-220"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">RGTagModel</span><span class="p">(</span><span class="n">externTagModel</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-221"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span><span class="o">-&gt;</span><span class="n">setModel</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">);</span>
+<a name="line-222"></a>
+<a name="line-223"></a><span class="cp">#ifdef GPSSYNC_MODELTEST</span>
+<a name="line-224"></a>
+<a name="line-225"></a> <span class="k">new</span> <span class="nf">ModelTest</span><span class="p">(</span><span class="n">externTagModel</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span><span class="p">);</span>
+<a name="line-226"></a> <span class="k">new</span> <span class="nf">ModelTest</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span><span class="p">);</span>
+<a name="line-227"></a>
+<a name="line-228"></a><span class="cp">#endif </span><span class="c1">// GPSSYNC_MODELTEST</span>
+<a name="line-229"></a>
+<a name="line-230"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagSelectionModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QItemSelectionModel</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">);</span>
+<a name="line-231"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span><span class="o">-&gt;</span><span class="n">setSelectionModel</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagSelectionModel</span><span class="p">);</span>
+<a name="line-232"></a>
+<a name="line-233"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCountry</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add country tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-234"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCountry</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Country}&quot;</span><span class="p">));</span>
+<a name="line-235"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddState</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add state tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-236"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddState</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{State}&quot;</span><span class="p">));</span>
+<a name="line-237"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddStateDistrict</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add state district tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-238"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddStateDistrict</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{State district}&quot;</span><span class="p">));</span>
+<a name="line-239"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCounty</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add county tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-240"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCounty</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{County}&quot;</span><span class="p">));</span>
+<a name="line-241"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCity</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add city tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-242"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCity</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{City}&quot;</span><span class="p">));</span>
+<a name="line-243"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCityDistrict</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add city district tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-244"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCityDistrict</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{City district}&quot;</span><span class="p">));</span>
+<a name="line-245"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddSuburb</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add suburb tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-246"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddSuburb</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Suburb}&quot;</span><span class="p">));</span>
+<a name="line-247"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddTown</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add town tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-248"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddTown</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Town}&quot;</span><span class="p">));</span>
+<a name="line-249"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddVillage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add village tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-250"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddVillage</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Village}&quot;</span><span class="p">));</span>
+<a name="line-251"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddHamlet</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add hamlet tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-252"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddHamlet</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Hamlet}&quot;</span><span class="p">));</span>
+<a name="line-253"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddStreet</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add street&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-254"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddStreet</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Street}&quot;</span><span class="p">));</span>
+<a name="line-255"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddHouseNumber</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add house number tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-256"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddHouseNumber</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{House number}&quot;</span><span class="p">));</span>
+<a name="line-257"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddPlace</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add place&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-258"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddPlace</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Place}&quot;</span><span class="p">));</span>
+<a name="line-259"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddLAU2</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add Local Administrative Area 2&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-260"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddLAU2</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{LAU2}&quot;</span><span class="p">));</span>
+<a name="line-261"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddLAU1</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add Local Administrative Area 1&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-262"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddLAU1</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{LAU1}&quot;</span><span class="p">));</span>
+<a name="line-263"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCustomizedSpacer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add new tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-264"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionRemoveTag</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Remove selected tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-265"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionRemoveAllSpacers</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Remove all control tags below this tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-266"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionRemoveAllSpacers</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Remove all spacers&quot;</span><span class="p">));</span>
+<a name="line-267"></a>
+<a name="line-268"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddAllAddressElementsToTag</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add all address elements&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-269"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">gridLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">UGridContainer</span><span class="p">);</span>
+<a name="line-270"></a>
+<a name="line-271"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Select language:&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">UGridContainer</span><span class="p">);</span>
+<a name="line-272"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QComboBox</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">UGridContainer</span><span class="p">);</span>
+<a name="line-273"></a>
+<a name="line-274"></a> <span class="n">DMetadata</span><span class="o">::</span><span class="n">CountryCodeMap</span> <span class="n">map</span> <span class="o">=</span> <span class="n">DMetadata</span><span class="o">::</span><span class="n">countryCodeMap</span><span class="p">();</span>
+<a name="line-275"></a>
+<a name="line-276"></a> <span class="k">for</span> <span class="p">(</span><span class="n">DMetadata</span><span class="o">::</span><span class="n">CountryCodeMap</span><span class="o">::</span><span class="n">Iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">map</span><span class="p">.</span><span class="n">begin</span><span class="p">()</span> <span class="p">;</span> <span class="n">it</span> <span class="o">!=</span> <span class="n">map</span><span class="p">.</span><span class="n">end</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">it</span><span class="p">)</span>
+<a name="line-277"></a> <span class="p">{</span>
+<a name="line-278"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1 - %2&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">it</span><span class="p">.</span><span class="n">key</span><span class="p">()).</span><span class="n">arg</span><span class="p">(</span><span class="n">it</span><span class="p">.</span><span class="n">value</span><span class="p">()),</span> <span class="n">it</span><span class="p">.</span><span class="n">key</span><span class="p">().</span><span class="n">toLower</span><span class="p">());</span>
+<a name="line-279"></a> <span class="p">}</span>
+<a name="line-280"></a>
+<a name="line-281"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Select service:&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">UGridContainer</span><span class="p">);</span>
+<a name="line-282"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceComboBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QComboBox</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">UGridContainer</span><span class="p">);</span>
+<a name="line-283"></a>
+<a name="line-284"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceComboBox</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Open Street Map&quot;</span><span class="p">));</span>
+<a name="line-285"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceComboBox</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Geonames.org place name (non-US)&quot;</span><span class="p">));</span>
+<a name="line-286"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceComboBox</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Geonames.org full address (US only)&quot;</span><span class="p">));</span>
+<a name="line-287"></a>
+<a name="line-288"></a> <span class="n">gridLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceLabel</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
+<a name="line-289"></a> <span class="n">gridLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceComboBox</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
+<a name="line-290"></a> <span class="n">gridLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">languageLabel</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-291"></a> <span class="n">gridLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-292"></a>
+<a name="line-293"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">UGridContainer</span><span class="o">-&gt;</span><span class="n">setLayout</span><span class="p">(</span><span class="n">gridLayout</span><span class="p">);</span>
+<a name="line-294"></a>
+<a name="line-295"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">separator</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DLineWidget</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-296"></a> <span class="n">vBoxLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">separator</span><span class="p">);</span>
+<a name="line-297"></a>
+<a name="line-298"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buttonHideOptions</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QPushButton</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Less options&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-299"></a> <span class="n">vBoxLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buttonHideOptions</span><span class="p">);</span>
+<a name="line-300"></a>
+<a name="line-301"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">LGridContainer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QWidget</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
+<a name="line-302"></a> <span class="n">vBoxLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">LGridContainer</span><span class="p">);</span>
+<a name="line-303"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">LGridLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">LGridContainer</span><span class="p">);</span>
+<a name="line-304"></a>
+<a name="line-305"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">xmpLoc</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">(</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Write tags to XMP&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">LGridContainer</span><span class="p">);</span>
+<a name="line-306"></a>
+<a name="line-307"></a> <span class="n">LGridLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">xmpLoc</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-308"></a>
+<a name="line-309"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">LGridContainer</span><span class="o">-&gt;</span><span class="n">setLayout</span><span class="p">(</span><span class="n">LGridLayout</span><span class="p">);</span>
+<a name="line-310"></a>
+<a name="line-311"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buttonRGSelected</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QPushButton</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Process reverse geocoding&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-312"></a> <span class="n">vBoxLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buttonRGSelected</span><span class="p">);</span>
+<a name="line-313"></a>
+<a name="line-314"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">backendRGList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="k">new</span> <span class="n">BackendOsmRG</span><span class="p">(</span><span class="k">this</span><span class="p">));</span>
+<a name="line-315"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">backendRGList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="k">new</span> <span class="n">BackendGeonamesRG</span><span class="p">(</span><span class="k">this</span><span class="p">));</span>
+<a name="line-316"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">backendRGList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="k">new</span> <span class="n">BackendGeonamesUSRG</span><span class="p">(</span><span class="k">this</span><span class="p">));</span>
+<a name="line-317"></a>
+<a name="line-318"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span><span class="o">-&gt;</span><span class="n">installEventFilter</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
+<a name="line-319"></a>
+<a name="line-320"></a> <span class="n">updateUIState</span><span class="p">();</span>
+<a name="line-321"></a>
+<a name="line-322"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buttonRGSelected</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">clicked</span><span class="p">()),</span>
+<a name="line-323"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotButtonRGSelected</span><span class="p">()));</span>
+<a name="line-324"></a>
+<a name="line-325"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buttonHideOptions</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">clicked</span><span class="p">()),</span>
+<a name="line-326"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotHideOptions</span><span class="p">()));</span>
+<a name="line-327"></a>
+<a name="line-328"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">selectionChanged</span><span class="p">(</span><span class="n">QItemSelection</span><span class="p">,</span><span class="n">QItemSelection</span><span class="p">)),</span>
+<a name="line-329"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">updateUIState</span><span class="p">()));</span>
+<a name="line-330"></a>
+<a name="line-331"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCountry</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-332"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
+<a name="line-333"></a>
+<a name="line-334"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddState</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-335"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
+<a name="line-336"></a>
+<a name="line-337"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddStateDistrict</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-338"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
+<a name="line-339"></a>
+<a name="line-340"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCounty</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-341"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
+<a name="line-342"></a>
+<a name="line-343"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCity</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-344"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
+<a name="line-345"></a>
+<a name="line-346"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCityDistrict</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-347"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
+<a name="line-348"></a>
+<a name="line-349"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddSuburb</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-350"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
+<a name="line-351"></a>
+<a name="line-352"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddTown</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-353"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
+<a name="line-354"></a>
+<a name="line-355"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddVillage</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-356"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
+<a name="line-357"></a>
+<a name="line-358"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddHamlet</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-359"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
+<a name="line-360"></a>
+<a name="line-361"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddHouseNumber</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-362"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
+<a name="line-363"></a>
+<a name="line-364"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddStreet</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-365"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
+<a name="line-366"></a>
+<a name="line-367"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddPlace</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-368"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
+<a name="line-369"></a>
+<a name="line-370"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddLAU2</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-371"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
+<a name="line-372"></a>
+<a name="line-373"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddLAU1</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-374"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
+<a name="line-375"></a>
+<a name="line-376"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCustomizedSpacer</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-377"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddCustomizedSpacer</span><span class="p">()));</span>
+<a name="line-378"></a>
+<a name="line-379"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddAllAddressElementsToTag</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-380"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddAllAddressElementsToTag</span><span class="p">()));</span>
+<a name="line-381"></a>
+<a name="line-382"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">dataChanged</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="n">QModelIndex</span><span class="p">)),</span>
+<a name="line-383"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotRegenerateNewTags</span><span class="p">()));</span>
+<a name="line-384"></a>
+<a name="line-385"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionRemoveTag</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-386"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotRemoveTag</span><span class="p">()));</span>
+<a name="line-387"></a>
+<a name="line-388"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionRemoveAllSpacers</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-389"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotRemoveAllSpacers</span><span class="p">()));</span>
+<a name="line-390"></a>
+<a name="line-391"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">backendRGList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-392"></a> <span class="p">{</span>
+<a name="line-393"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">backendRGList</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalRGReady</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">RGInfo</span><span class="o">&gt;&amp;</span><span class="p">)),</span>
+<a name="line-394"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotRGReady</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">RGInfo</span><span class="o">&gt;&amp;</span><span class="p">)));</span>
+<a name="line-395"></a> <span class="p">}</span>
+<a name="line-396"></a>
+<a name="line-397"></a> <span class="kt">int</span> <span class="n">currentServiceIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceComboBox</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">();</span>
+<a name="line-398"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">backendRGList</span><span class="p">[</span><span class="n">currentServiceIndex</span><span class="p">];</span>
+<a name="line-399"></a><span class="p">}</span>
+<a name="line-400"></a>
+<a name="line-401"></a><span class="cm">/**</span>
+<a name="line-402"></a><span class="cm"> * Destructor</span>
+<a name="line-403"></a><span class="cm"> */</span>
+<a name="line-404"></a><span class="n">RGWidget</span><span class="o">::~</span><span class="n">RGWidget</span><span class="p">()</span>
+<a name="line-405"></a><span class="p">{</span>
+<a name="line-406"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
+<a name="line-407"></a><span class="p">}</span>
+<a name="line-408"></a>
+<a name="line-409"></a><span class="cm">/**</span>
+<a name="line-410"></a><span class="cm"> * Enables or disables the containing widgets.</span>
+<a name="line-411"></a><span class="cm"> */</span>
+<a name="line-412"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">updateUIState</span><span class="p">()</span>
+<a name="line-413"></a><span class="p">{</span>
+<a name="line-414"></a> <span class="k">const</span> <span class="kt">bool</span> <span class="n">haveSelection</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="o">-&gt;</span><span class="n">hasSelection</span><span class="p">();</span>
+<a name="line-415"></a>
+<a name="line-416"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buttonRGSelected</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">UIEnabled</span> <span class="o">&amp;&amp;</span> <span class="n">haveSelection</span><span class="p">);</span>
+<a name="line-417"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceLabel</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">UIEnabled</span><span class="p">);</span>
+<a name="line-418"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceComboBox</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">UIEnabled</span><span class="p">);</span>
+<a name="line-419"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageLabel</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">UIEnabled</span><span class="p">);</span>
+<a name="line-420"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">UIEnabled</span><span class="p">);</span>
+<a name="line-421"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buttonHideOptions</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">UIEnabled</span><span class="p">);</span>
+<a name="line-422"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">xmpLoc</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">UIEnabled</span><span class="p">);</span>
+<a name="line-423"></a><span class="p">}</span>
+<a name="line-424"></a>
+<a name="line-425"></a><span class="cm">/**</span>
+<a name="line-426"></a><span class="cm"> * This slot triggeres when the button that start the reverse geocoding process is pressed.</span>
+<a name="line-427"></a><span class="cm"> */</span>
+<a name="line-428"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">slotButtonRGSelected</span><span class="p">()</span>
+<a name="line-429"></a><span class="p">{</span>
+<a name="line-430"></a> <span class="c1">// get the selected images:</span>
+<a name="line-431"></a> <span class="k">const</span> <span class="n">QModelIndexList</span> <span class="n">selectedItems</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="o">-&gt;</span><span class="n">selectedRows</span><span class="p">();</span>
+<a name="line-432"></a> <span class="kt">int</span> <span class="n">currentServiceIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceComboBox</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">();</span>
+<a name="line-433"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">backendRGList</span><span class="p">[</span><span class="n">currentServiceIndex</span><span class="p">];</span>
+<a name="line-434"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span> <span class="o">=</span> <span class="k">new</span> <span class="n">GPSUndoCommand</span><span class="p">();</span>
+<a name="line-435"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Image tags are changed.&quot;</span><span class="p">));</span>
+<a name="line-436"></a>
+<a name="line-437"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">RGInfo</span><span class="o">&gt;</span> <span class="n">photoList</span><span class="p">;</span>
+<a name="line-438"></a> <span class="n">QString</span> <span class="n">wantedLanguage</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span><span class="o">-&gt;</span><span class="n">itemData</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">()).</span><span class="n">toString</span><span class="p">();</span>
+<a name="line-439"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">returnedSpacers</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">getSpacers</span><span class="p">();</span>
+<a name="line-440"></a>
+<a name="line-441"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">selectedItems</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-442"></a> <span class="p">{</span>
+<a name="line-443"></a> <span class="k">const</span> <span class="n">QPersistentModelIndex</span> <span class="n">itemIndex</span> <span class="o">=</span> <span class="n">selectedItems</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
+<a name="line-444"></a> <span class="n">GPSItemContainer</span><span class="o">*</span> <span class="k">const</span> <span class="n">selectedItem</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="o">-&gt;</span><span class="n">itemFromIndex</span><span class="p">(</span><span class="n">itemIndex</span><span class="p">);</span>
+<a name="line-445"></a> <span class="k">const</span> <span class="n">GPSDataContainer</span> <span class="n">gpsData</span> <span class="o">=</span> <span class="n">selectedItem</span><span class="o">-&gt;</span><span class="n">gpsData</span><span class="p">();</span>
+<a name="line-446"></a>
+<a name="line-447"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">gpsData</span><span class="p">.</span><span class="n">hasCoordinates</span><span class="p">())</span>
+<a name="line-448"></a> <span class="k">continue</span><span class="p">;</span>
+<a name="line-449"></a>
+<a name="line-450"></a> <span class="k">const</span> <span class="n">qreal</span> <span class="n">latitude</span> <span class="o">=</span> <span class="n">gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">lat</span><span class="p">();</span>
+<a name="line-451"></a> <span class="k">const</span> <span class="n">qreal</span> <span class="n">longitude</span> <span class="o">=</span> <span class="n">gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">lon</span><span class="p">();</span>
+<a name="line-452"></a>
+<a name="line-453"></a> <span class="n">RGInfo</span> <span class="n">photoObj</span><span class="p">;</span>
+<a name="line-454"></a> <span class="n">photoObj</span><span class="p">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">itemIndex</span><span class="p">;</span>
+<a name="line-455"></a> <span class="n">photoObj</span><span class="p">.</span><span class="n">coordinates</span> <span class="o">=</span> <span class="n">GeoCoordinates</span><span class="p">(</span><span class="n">latitude</span><span class="p">,</span> <span class="n">longitude</span><span class="p">);</span>
+<a name="line-456"></a>
+<a name="line-457"></a> <span class="n">photoList</span> <span class="o">&lt;&lt;</span> <span class="n">photoObj</span><span class="p">;</span>
+<a name="line-458"></a>
+<a name="line-459"></a> <span class="n">selectedItem</span><span class="o">-&gt;</span><span class="n">writeTagsToXmp</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">xmpLoc</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
+<a name="line-460"></a> <span class="p">}</span>
+<a name="line-461"></a>
+<a name="line-462"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">photoList</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-463"></a> <span class="p">{</span>
+<a name="line-464"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">receivedRGCount</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-465"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestedRGCount</span> <span class="o">=</span> <span class="n">photoList</span><span class="p">.</span><span class="n">count</span><span class="p">();</span>
+<a name="line-466"></a>
+<a name="line-467"></a> <span class="n">emit</span> <span class="nf">signalSetUIEnabled</span><span class="p">(</span><span class="nb">false</span><span class="p">,</span> <span class="k">this</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">SLOT</span><span class="p">(</span><span class="n">slotRGCanceled</span><span class="p">())));</span>
+<a name="line-468"></a> <span class="n">emit</span> <span class="nf">signalProgressSetup</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">requestedRGCount</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Retrieving RG info -&quot;</span><span class="p">));</span>
+<a name="line-469"></a>
+<a name="line-470"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span><span class="o">-&gt;</span><span class="n">callRGBackend</span><span class="p">(</span><span class="n">photoList</span><span class="p">,</span> <span class="n">wantedLanguage</span><span class="p">);</span>
+<a name="line-471"></a> <span class="p">}</span>
+<a name="line-472"></a><span class="p">}</span>
+<a name="line-473"></a>
+<a name="line-474"></a><span class="cm">/**</span>
+<a name="line-475"></a><span class="cm"> * Hide or shows the extra options.</span>
+<a name="line-476"></a><span class="cm"> */</span>
+<a name="line-477"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">slotHideOptions</span><span class="p">()</span>
+<a name="line-478"></a><span class="p">{</span>
+<a name="line-479"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">hideOptions</span><span class="p">)</span>
+<a name="line-480"></a> <span class="p">{</span>
+<a name="line-481"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">LGridContainer</span><span class="o">-&gt;</span><span class="n">hide</span><span class="p">();</span>
+<a name="line-482"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">hideOptions</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-483"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buttonHideOptions</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;More options&quot;</span><span class="p">));</span>
+<a name="line-484"></a> <span class="p">}</span>
+<a name="line-485"></a> <span class="k">else</span>
+<a name="line-486"></a> <span class="p">{</span>
+<a name="line-487"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">LGridContainer</span><span class="o">-&gt;</span><span class="n">show</span><span class="p">();</span>
+<a name="line-488"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">hideOptions</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-489"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buttonHideOptions</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Less options&quot;</span><span class="p">));</span>
+<a name="line-490"></a> <span class="p">}</span>
+<a name="line-491"></a><span class="p">}</span>
+<a name="line-492"></a>
+<a name="line-493"></a><span class="cm">/**</span>
+<a name="line-494"></a><span class="cm"> * The data has returned from backend and now it&#39;s processed here.</span>
+<a name="line-495"></a><span class="cm"> * @param returnedRGList Contains the data returned by backend.</span>
+<a name="line-496"></a><span class="cm"> */</span>
+<a name="line-497"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">slotRGReady</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">RGInfo</span><span class="o">&gt;&amp;</span> <span class="n">returnedRGList</span><span class="p">)</span>
+<a name="line-498"></a><span class="p">{</span>
+<a name="line-499"></a> <span class="k">const</span> <span class="n">QString</span> <span class="n">errorString</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span><span class="o">-&gt;</span><span class="n">getErrorMessage</span><span class="p">();</span>
+<a name="line-500"></a>
+<a name="line-501"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">errorString</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-502"></a> <span class="p">{</span>
+<a name="line-503"></a> <span class="c1">/// @todo This collides with the message box displayed if the user aborts the RG process</span>
+<a name="line-504"></a>
+<a name="line-505"></a> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">critical</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">applicationName</span><span class="p">(),</span> <span class="n">errorString</span><span class="p">);</span>
+<a name="line-506"></a>
+<a name="line-507"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">receivedRGCount</span><span class="o">+=</span><span class="n">returnedRGList</span><span class="p">.</span><span class="n">count</span><span class="p">();</span>
+<a name="line-508"></a>
+<a name="line-509"></a> <span class="n">emit</span> <span class="nf">signalSetUIEnabled</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-510"></a>
+<a name="line-511"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-512"></a> <span class="p">}</span>
+<a name="line-513"></a>
+<a name="line-514"></a> <span class="n">QString</span> <span class="n">address</span><span class="p">;</span>
+<a name="line-515"></a>
+<a name="line-516"></a><span class="hll"> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">returnedRGList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span><span class='error2'>&lt;--- Shadowed declaration</span>
+</span><a name="line-517"></a> <span class="p">{</span>
+<a name="line-518"></a> <span class="n">QPersistentModelIndex</span> <span class="n">currentImageIndex</span> <span class="o">=</span> <span class="n">returnedRGList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">id</span><span class="p">;</span>
+<a name="line-519"></a>
+<a name="line-520"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">returnedRGList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">rgData</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-521"></a> <span class="p">{</span>
+<a name="line-522"></a> <span class="n">QString</span> <span class="n">addressElementsWantedFormat</span><span class="p">;</span>
+<a name="line-523"></a>
+<a name="line-524"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span><span class="o">-&gt;</span><span class="n">backendName</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Geonames&quot;</span><span class="p">))</span>
+<a name="line-525"></a> <span class="p">{</span>
+<a name="line-526"></a> <span class="n">addressElementsWantedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{Country}/{Place}&quot;</span><span class="p">));</span>
+<a name="line-527"></a> <span class="p">}</span>
+<a name="line-528"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span><span class="o">-&gt;</span><span class="n">backendName</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;GeonamesUS&quot;</span><span class="p">))</span>
+<a name="line-529"></a> <span class="p">{</span>
+<a name="line-530"></a> <span class="n">addressElementsWantedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{LAU2}/{LAU1}/{City}&quot;</span><span class="p">));</span>
+<a name="line-531"></a> <span class="p">}</span>
+<a name="line-532"></a> <span class="k">else</span>
+<a name="line-533"></a> <span class="p">{</span>
+<a name="line-534"></a> <span class="n">addressElementsWantedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{Country}/{State}/{State district}/{County}/{City}/{City district}/{Suburb}/{Town}/{Village}/{Hamlet}/{Street}/{House number}&quot;</span><span class="p">));</span>
+<a name="line-535"></a> <span class="p">}</span>
+<a name="line-536"></a>
+<a name="line-537"></a> <span class="n">QStringList</span> <span class="n">combinedResult</span> <span class="o">=</span> <span class="n">makeTagString</span><span class="p">(</span><span class="n">returnedRGList</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">addressElementsWantedFormat</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span><span class="o">-&gt;</span><span class="n">backendName</span><span class="p">());</span>
+<a name="line-538"></a> <span class="n">QString</span> <span class="n">addressFormat</span> <span class="o">=</span> <span class="n">combinedResult</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+<a name="line-539"></a> <span class="n">QString</span> <span class="n">addressElements</span> <span class="o">=</span> <span class="n">combinedResult</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+<a name="line-540"></a>
+<a name="line-541"></a> <span class="c1">//removes first &quot;/&quot; from tag addresses</span>
+<a name="line-542"></a>
+<a name="line-543"></a> <span class="n">addressFormat</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-544"></a> <span class="n">addressElements</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-545"></a> <span class="n">addressElementsWantedFormat</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-546"></a>
+<a name="line-547"></a> <span class="k">const</span> <span class="n">QStringList</span> <span class="n">listAddressElementsWantedFormat</span> <span class="o">=</span> <span class="n">addressElementsWantedFormat</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">));</span>
+<a name="line-548"></a> <span class="k">const</span> <span class="n">QStringList</span> <span class="n">listAddressElements</span> <span class="o">=</span> <span class="n">addressElements</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">));</span>
+<a name="line-549"></a> <span class="k">const</span> <span class="n">QStringList</span> <span class="n">listAddressFormat</span> <span class="o">=</span> <span class="n">addressFormat</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">));</span>
+<a name="line-550"></a> <span class="n">QStringList</span> <span class="n">elements</span><span class="p">,</span> <span class="n">resultedData</span><span class="p">;</span>
+<a name="line-551"></a>
+<a name="line-552"></a><span class="hll"> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">listAddressElementsWantedFormat</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-553"></a> <span class="p">{</span>
+<a name="line-554"></a> <span class="n">QString</span> <span class="n">currentAddressFormat</span> <span class="o">=</span> <span class="n">listAddressElementsWantedFormat</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
+<a name="line-555"></a> <span class="kt">int</span> <span class="n">currentIndexFormat</span> <span class="o">=</span> <span class="n">listAddressFormat</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">currentAddressFormat</span><span class="p">,</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-556"></a>
+<a name="line-557"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentIndexFormat</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="line-558"></a> <span class="p">{</span>
+<a name="line-559"></a> <span class="n">elements</span><span class="o">&lt;&lt;</span><span class="n">currentAddressFormat</span><span class="p">;</span>
+<a name="line-560"></a> <span class="n">resultedData</span><span class="o">&lt;&lt;</span><span class="n">listAddressElements</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">currentIndexFormat</span><span class="p">);</span>
+<a name="line-561"></a> <span class="p">}</span>
+<a name="line-562"></a> <span class="p">}</span>
+<a name="line-563"></a>
+<a name="line-564"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">returnedTags</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">addNewData</span><span class="p">(</span><span class="n">elements</span><span class="p">,</span> <span class="n">resultedData</span><span class="p">);</span>
+<a name="line-565"></a> <span class="n">GPSItemContainer</span><span class="o">*</span> <span class="k">const</span> <span class="n">currentItem</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="o">-&gt;</span><span class="n">itemFromIndex</span><span class="p">(</span><span class="n">currentImageIndex</span><span class="p">);</span>
+<a name="line-566"></a>
+<a name="line-567"></a> <span class="n">GPSUndoCommand</span><span class="o">::</span><span class="n">UndoInfo</span> <span class="n">undoInfo</span><span class="p">(</span><span class="n">currentImageIndex</span><span class="p">);</span>
+<a name="line-568"></a> <span class="n">undoInfo</span><span class="p">.</span><span class="n">readOldDataFromItem</span><span class="p">(</span><span class="n">currentItem</span><span class="p">);</span>
+<a name="line-569"></a>
+<a name="line-570"></a> <span class="n">currentItem</span><span class="o">-&gt;</span><span class="n">setTagList</span><span class="p">(</span><span class="n">returnedTags</span><span class="p">);</span>
+<a name="line-571"></a>
+<a name="line-572"></a> <span class="n">undoInfo</span><span class="p">.</span><span class="n">readNewDataFromItem</span><span class="p">(</span><span class="n">currentItem</span><span class="p">);</span>
+<a name="line-573"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span><span class="o">-&gt;</span><span class="n">addUndoInfo</span><span class="p">(</span><span class="n">undoInfo</span><span class="p">);</span>
+<a name="line-574"></a> <span class="p">}</span>
+<a name="line-575"></a> <span class="p">}</span>
+<a name="line-576"></a>
+<a name="line-577"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">receivedRGCount</span> <span class="o">+=</span> <span class="n">returnedRGList</span><span class="p">.</span><span class="n">count</span><span class="p">();</span>
+<a name="line-578"></a>
+<a name="line-579"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">receivedRGCount</span> <span class="o">&gt;=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestedRGCount</span><span class="p">)</span>
+<a name="line-580"></a> <span class="p">{</span>
+<a name="line-581"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currentlyAskingCancelQuestion</span><span class="p">)</span>
+<a name="line-582"></a> <span class="p">{</span>
+<a name="line-583"></a> <span class="c1">// if the user is currently answering the cancel question, do nothing, only report progress</span>
+<a name="line-584"></a>
+<a name="line-585"></a> <span class="n">emit</span> <span class="n">signalProgressChanged</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">receivedRGCount</span><span class="p">);</span>
+<a name="line-586"></a> <span class="p">}</span>
+<a name="line-587"></a> <span class="k">else</span>
+<a name="line-588"></a> <span class="p">{</span>
+<a name="line-589"></a> <span class="n">emit</span> <span class="n">signalUndoCommand</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span><span class="p">);</span>
+<a name="line-590"></a>
+<a name="line-591"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-592"></a>
+<a name="line-593"></a> <span class="n">emit</span> <span class="nf">signalSetUIEnabled</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-594"></a> <span class="p">}</span>
+<a name="line-595"></a> <span class="p">}</span>
+<a name="line-596"></a> <span class="k">else</span>
+<a name="line-597"></a> <span class="p">{</span>
+<a name="line-598"></a> <span class="n">emit</span> <span class="n">signalProgressChanged</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">receivedRGCount</span><span class="p">);</span>
+<a name="line-599"></a> <span class="p">}</span>
+<a name="line-600"></a><span class="p">}</span>
+<a name="line-601"></a>
+<a name="line-602"></a><span class="cm">/**</span>
+<a name="line-603"></a><span class="cm"> * Sets whether the containing widgets are enabled or disabled.</span>
+<a name="line-604"></a><span class="cm"> * @param state If true, the controls are enabled.</span>
+<a name="line-605"></a><span class="cm"> */</span>
+<a name="line-606"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">setUIEnabled</span><span class="p">(</span><span class="k">const</span> <span class="kt">bool</span> <span class="n">state</span><span class="p">)</span>
+<a name="line-607"></a><span class="p">{</span>
+<a name="line-608"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">UIEnabled</span> <span class="o">=</span> <span class="n">state</span><span class="p">;</span>
+<a name="line-609"></a> <span class="n">updateUIState</span><span class="p">();</span>
+<a name="line-610"></a><span class="p">}</span>
+<a name="line-611"></a>
+<a name="line-612"></a><span class="cm">/**</span>
+<a name="line-613"></a><span class="cm"> * Here are filtered the events.</span>
+<a name="line-614"></a><span class="cm"> */</span>
+<a name="line-615"></a><span class="kt">bool</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">eventFilter</span><span class="p">(</span><span class="n">QObject</span><span class="o">*</span> <span class="n">watched</span><span class="p">,</span> <span class="n">QEvent</span><span class="o">*</span> <span class="n">event</span><span class="p">)</span>
+<a name="line-616"></a><span class="p">{</span>
+<a name="line-617"></a> <span class="k">if</span> <span class="p">(</span><span class="n">watched</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span><span class="p">)</span>
+<a name="line-618"></a> <span class="p">{</span>
+<a name="line-619"></a> <span class="k">if</span> <span class="p">((</span><span class="n">event</span><span class="o">-&gt;</span><span class="n">type</span><span class="p">()</span> <span class="o">==</span> <span class="n">QEvent</span><span class="o">::</span><span class="n">ContextMenu</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">UIEnabled</span><span class="p">)</span>
+<a name="line-620"></a> <span class="p">{</span>
+<a name="line-621"></a> <span class="n">QMenu</span><span class="o">*</span> <span class="k">const</span> <span class="n">menu</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QMenu</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span><span class="p">);</span>
+<a name="line-622"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">currentServiceIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceComboBox</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">();</span>
+<a name="line-623"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">backendRGList</span><span class="p">[</span><span class="n">currentServiceIndex</span><span class="p">];</span>
+<a name="line-624"></a> <span class="n">QString</span> <span class="n">backendName</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span><span class="o">-&gt;</span><span class="n">backendName</span><span class="p">();</span>
+<a name="line-625"></a> <span class="n">QContextMenuEvent</span><span class="o">*</span> <span class="k">const</span> <span class="n">e</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">QContextMenuEvent</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">event</span><span class="p">);</span>
+<a name="line-626"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentTagTreeIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span><span class="o">-&gt;</span><span class="n">indexAt</span><span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">());</span>
+<a name="line-627"></a> <span class="k">const</span> <span class="n">Type</span> <span class="n">tagType</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">getTagType</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currentTagTreeIndex</span><span class="p">);</span>
+<a name="line-628"></a>
+<a name="line-629"></a> <span class="k">if</span> <span class="p">(</span><span class="n">backendName</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;OSM&quot;</span><span class="p">))</span>
+<a name="line-630"></a> <span class="p">{</span>
+<a name="line-631"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddAllAddressElementsToTag</span><span class="p">);</span>
+<a name="line-632"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addSeparator</span><span class="p">();</span>
+<a name="line-633"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCountry</span><span class="p">);</span>
+<a name="line-634"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddState</span><span class="p">);</span>
+<a name="line-635"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddStateDistrict</span><span class="p">);</span>
+<a name="line-636"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCounty</span><span class="p">);</span>
+<a name="line-637"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCity</span><span class="p">);</span>
+<a name="line-638"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCityDistrict</span><span class="p">);</span>
+<a name="line-639"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddSuburb</span><span class="p">);</span>
+<a name="line-640"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddTown</span><span class="p">);</span>
+<a name="line-641"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddVillage</span><span class="p">);</span>
+<a name="line-642"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddHamlet</span><span class="p">);</span>
+<a name="line-643"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddStreet</span><span class="p">);</span>
+<a name="line-644"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddHouseNumber</span><span class="p">);</span>
+<a name="line-645"></a> <span class="p">}</span>
+<a name="line-646"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">backendName</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Geonames&quot;</span><span class="p">))</span>
+<a name="line-647"></a> <span class="p">{</span>
+<a name="line-648"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddAllAddressElementsToTag</span><span class="p">);</span>
+<a name="line-649"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCountry</span><span class="p">);</span>
+<a name="line-650"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddPlace</span><span class="p">);</span>
+<a name="line-651"></a> <span class="p">}</span>
+<a name="line-652"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">backendName</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;GeonamesUS&quot;</span><span class="p">))</span>
+<a name="line-653"></a> <span class="p">{</span>
+<a name="line-654"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddAllAddressElementsToTag</span><span class="p">);</span>
+<a name="line-655"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddLAU2</span><span class="p">);</span>
+<a name="line-656"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddLAU1</span><span class="p">);</span>
+<a name="line-657"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCity</span><span class="p">);</span>
+<a name="line-658"></a> <span class="p">}</span>
+<a name="line-659"></a>
+<a name="line-660"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addSeparator</span><span class="p">();</span>
+<a name="line-661"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCustomizedSpacer</span><span class="p">);</span>
+<a name="line-662"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addSeparator</span><span class="p">();</span>
+<a name="line-663"></a>
+<a name="line-664"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tagType</span> <span class="o">==</span> <span class="n">TypeSpacer</span><span class="p">)</span>
+<a name="line-665"></a> <span class="p">{</span>
+<a name="line-666"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionRemoveTag</span><span class="p">);</span>
+<a name="line-667"></a> <span class="p">}</span>
+<a name="line-668"></a>
+<a name="line-669"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionRemoveAllSpacers</span><span class="p">);</span>
+<a name="line-670"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">exec</span><span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">globalPos</span><span class="p">());</span>
+<a name="line-671"></a> <span class="k">delete</span> <span class="n">menu</span><span class="p">;</span>
+<a name="line-672"></a> <span class="p">}</span>
+<a name="line-673"></a> <span class="p">}</span>
+<a name="line-674"></a>
+<a name="line-675"></a> <span class="k">return</span> <span class="n">QObject</span><span class="o">::</span><span class="n">eventFilter</span><span class="p">(</span><span class="n">watched</span><span class="p">,</span> <span class="n">event</span><span class="p">);</span>
+<a name="line-676"></a><span class="p">}</span>
+<a name="line-677"></a>
+<a name="line-678"></a><span class="cm">/**</span>
+<a name="line-679"></a><span class="cm"> * Saves the settings of widgets contained in reverse geocoding widget.</span>
+<a name="line-680"></a><span class="cm"> * @param group Here are stored the settings.</span>
+<a name="line-681"></a><span class="cm"> */</span>
+<a name="line-682"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">saveSettingsToGroup</span><span class="p">(</span><span class="n">KConfigGroup</span><span class="o">*</span> <span class="k">const</span> <span class="n">group</span><span class="p">)</span>
+<a name="line-683"></a><span class="p">{</span>
+<a name="line-684"></a> <span class="n">group</span><span class="o">-&gt;</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;RG Backend&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceComboBox</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">());</span>
+<a name="line-685"></a> <span class="n">group</span><span class="o">-&gt;</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Language&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">());</span>
+<a name="line-686"></a> <span class="n">group</span><span class="o">-&gt;</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Hide options&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">hideOptions</span><span class="p">);</span>
+<a name="line-687"></a> <span class="n">group</span><span class="o">-&gt;</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;XMP location&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">xmpLoc</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
+<a name="line-688"></a>
+<a name="line-689"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">currentSpacerList</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">getSpacers</span><span class="p">();</span>
+<a name="line-690"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">spacerCount</span> <span class="o">=</span> <span class="n">currentSpacerList</span><span class="p">.</span><span class="n">count</span><span class="p">();</span>
+<a name="line-691"></a> <span class="n">group</span><span class="o">-&gt;</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Spacers count&quot;</span><span class="p">,</span> <span class="n">spacerCount</span><span class="p">);</span>
+<a name="line-692"></a>
+<a name="line-693"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentSpacerList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-694"></a> <span class="p">{</span>
+<a name="line-695"></a> <span class="n">QString</span> <span class="n">spacerName</span><span class="p">;</span>
+<a name="line-696"></a> <span class="n">spacerName</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;Spacerlistname %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">i</span><span class="p">));</span>
+<a name="line-697"></a> <span class="n">QString</span> <span class="n">spacerType</span><span class="p">;</span>
+<a name="line-698"></a> <span class="n">spacerType</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;Spacerlisttype %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">i</span><span class="p">));</span>
+<a name="line-699"></a>
+<a name="line-700"></a> <span class="n">QStringList</span> <span class="n">spacerTagNames</span><span class="p">;</span>
+<a name="line-701"></a> <span class="n">QStringList</span> <span class="n">spacerTypes</span><span class="p">;</span>
+<a name="line-702"></a>
+<a name="line-703"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">j</span> <span class="o">&lt;</span> <span class="n">currentSpacerList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span>
+<a name="line-704"></a> <span class="p">{</span>
+<a name="line-705"></a> <span class="n">spacerTagNames</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentSpacerList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">at</span><span class="p">(</span><span class="n">j</span><span class="p">).</span><span class="n">tagName</span><span class="p">);</span>
+<a name="line-706"></a>
+<a name="line-707"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentSpacerList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">at</span><span class="p">(</span><span class="n">j</span><span class="p">).</span><span class="n">tagType</span> <span class="o">==</span> <span class="n">TypeSpacer</span><span class="p">)</span>
+<a name="line-708"></a> <span class="p">{</span>
+<a name="line-709"></a> <span class="n">spacerTypes</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Spacer&quot;</span><span class="p">));</span>
+<a name="line-710"></a> <span class="p">}</span>
+<a name="line-711"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">currentSpacerList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">at</span><span class="p">(</span><span class="n">j</span><span class="p">).</span><span class="n">tagType</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">)</span>
+<a name="line-712"></a> <span class="p">{</span>
+<a name="line-713"></a> <span class="n">spacerTypes</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;NewChild&quot;</span><span class="p">));</span>
+<a name="line-714"></a> <span class="p">}</span>
+<a name="line-715"></a> <span class="k">else</span>
+<a name="line-716"></a> <span class="p">{</span>
+<a name="line-717"></a> <span class="n">spacerTypes</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;OldChild&quot;</span><span class="p">));</span>
+<a name="line-718"></a> <span class="p">}</span>
+<a name="line-719"></a> <span class="p">}</span>
+<a name="line-720"></a>
+<a name="line-721"></a> <span class="n">group</span><span class="o">-&gt;</span><span class="n">writeEntry</span><span class="p">(</span><span class="n">spacerName</span><span class="p">,</span> <span class="n">spacerTagNames</span><span class="p">);</span>
+<a name="line-722"></a> <span class="n">group</span><span class="o">-&gt;</span><span class="n">writeEntry</span><span class="p">(</span><span class="n">spacerType</span><span class="p">,</span> <span class="n">spacerTypes</span><span class="p">);</span>
+<a name="line-723"></a> <span class="p">}</span>
+<a name="line-724"></a><span class="p">}</span>
+<a name="line-725"></a>
+<a name="line-726"></a><span class="cm">/**</span>
+<a name="line-727"></a><span class="cm"> * Restores the settings of widgets contained in reverse geocoding widget.</span>
+<a name="line-728"></a><span class="cm"> * @param group Here are stored the settings.</span>
+<a name="line-729"></a><span class="cm"> */</span>
+<a name="line-730"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">readSettingsFromGroup</span><span class="p">(</span><span class="k">const</span> <span class="n">KConfigGroup</span><span class="o">*</span> <span class="k">const</span> <span class="n">group</span><span class="p">)</span>
+<a name="line-731"></a><span class="p">{</span>
+<a name="line-732"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">spacerCount</span> <span class="o">=</span> <span class="n">group</span><span class="o">-&gt;</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Spacers count&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-733"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">spacersList</span><span class="p">;</span>
+<a name="line-734"></a>
+<a name="line-735"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">spacerCount</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-736"></a> <span class="p">{</span>
+<a name="line-737"></a> <span class="n">QStringList</span> <span class="n">spacerTagNames</span> <span class="o">=</span> <span class="n">group</span><span class="o">-&gt;</span><span class="n">readEntry</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;Spacerlistname %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">i</span><span class="p">),</span> <span class="n">QStringList</span><span class="p">());</span>
+<a name="line-738"></a> <span class="n">QStringList</span> <span class="n">spacerTypes</span> <span class="o">=</span> <span class="n">group</span><span class="o">-&gt;</span><span class="n">readEntry</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;Spacerlisttype %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">i</span><span class="p">),</span> <span class="n">QStringList</span><span class="p">());</span>
+<a name="line-739"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="n">currentSpacerAddress</span><span class="p">;</span>
+<a name="line-740"></a>
+<a name="line-741"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">j</span> <span class="o">&lt;</span> <span class="n">spacerTagNames</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span>
+<a name="line-742"></a> <span class="p">{</span>
+<a name="line-743"></a> <span class="n">TagData</span> <span class="n">currentTagData</span><span class="p">;</span>
+<a name="line-744"></a> <span class="n">currentTagData</span><span class="p">.</span><span class="n">tagName</span> <span class="o">=</span> <span class="n">spacerTagNames</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">j</span><span class="p">);</span>
+<a name="line-745"></a> <span class="n">QString</span> <span class="n">currentTagType</span> <span class="o">=</span> <span class="n">spacerTypes</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">j</span><span class="p">);</span>
+<a name="line-746"></a>
+<a name="line-747"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentTagType</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Spacer&quot;</span><span class="p">))</span>
+<a name="line-748"></a> <span class="p">{</span>
+<a name="line-749"></a> <span class="n">currentTagData</span><span class="p">.</span><span class="n">tagType</span> <span class="o">=</span> <span class="n">TypeSpacer</span><span class="p">;</span>
+<a name="line-750"></a> <span class="p">}</span>
+<a name="line-751"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">currentTagType</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;NewChild&quot;</span><span class="p">))</span>
+<a name="line-752"></a> <span class="p">{</span>
+<a name="line-753"></a> <span class="n">currentTagData</span><span class="p">.</span><span class="n">tagType</span> <span class="o">=</span> <span class="n">TypeNewChild</span><span class="p">;</span>
+<a name="line-754"></a> <span class="p">}</span>
+<a name="line-755"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">currentTagType</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;OldChild&quot;</span><span class="p">))</span>
+<a name="line-756"></a> <span class="p">{</span>
+<a name="line-757"></a> <span class="n">currentTagData</span><span class="p">.</span><span class="n">tagType</span> <span class="o">=</span> <span class="n">TypeChild</span><span class="p">;</span>
+<a name="line-758"></a> <span class="p">}</span>
+<a name="line-759"></a>
+<a name="line-760"></a> <span class="n">currentSpacerAddress</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentTagData</span><span class="p">);</span>
+<a name="line-761"></a> <span class="p">}</span>
+<a name="line-762"></a>
+<a name="line-763"></a> <span class="n">spacersList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentSpacerAddress</span><span class="p">);</span>
+<a name="line-764"></a> <span class="p">}</span>
+<a name="line-765"></a>
+<a name="line-766"></a> <span class="c1">// this make sure that all external tags are added to tag tree view before spacers are re-added</span>
+<a name="line-767"></a>
+<a name="line-768"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">addAllExternalTagsToTreeView</span><span class="p">();</span>
+<a name="line-769"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">readdNewTags</span><span class="p">(</span><span class="n">spacersList</span><span class="p">);</span>
+<a name="line-770"></a>
+<a name="line-771"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceComboBox</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">group</span><span class="o">-&gt;</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;RG Backend&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">));</span>
+<a name="line-772"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">group</span><span class="o">-&gt;</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Language&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">));</span>
+<a name="line-773"></a>
+<a name="line-774"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">hideOptions</span> <span class="o">=</span> <span class="o">!</span><span class="p">(</span><span class="n">group</span><span class="o">-&gt;</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Hide options&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">));</span>
+<a name="line-775"></a> <span class="n">slotHideOptions</span><span class="p">();</span>
+<a name="line-776"></a>
+<a name="line-777"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">xmpLoc</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">group</span><span class="o">-&gt;</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;XMP location&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">));</span>
+<a name="line-778"></a><span class="p">}</span>
+<a name="line-779"></a>
+<a name="line-780"></a><span class="cm">/**</span>
+<a name="line-781"></a><span class="cm"> * Adds a tag to tag tree.</span>
+<a name="line-782"></a><span class="cm"> */</span>
+<a name="line-783"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">slotAddSingleSpacer</span><span class="p">()</span>
+<a name="line-784"></a><span class="p">{</span>
+<a name="line-785"></a><span class="cm">/*</span>
+<a name="line-786"></a><span class="cm"> const QModelIndex baseIndex = d-&gt;tagSelectionModel-&gt;currentIndex();</span>
+<a name="line-787"></a><span class="cm">*/</span>
+<a name="line-788"></a> <span class="n">QModelIndex</span> <span class="n">baseIndex</span><span class="p">;</span>
+<a name="line-789"></a>
+<a name="line-790"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currentTagTreeIndex</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
+<a name="line-791"></a> <span class="p">{</span>
+<a name="line-792"></a> <span class="n">baseIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentTagTreeIndex</span><span class="p">;</span>
+<a name="line-793"></a> <span class="p">}</span>
+<a name="line-794"></a> <span class="k">else</span>
+<a name="line-795"></a> <span class="p">{</span>
+<a name="line-796"></a> <span class="n">baseIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagSelectionModel</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">();</span>
+<a name="line-797"></a> <span class="p">}</span>
+<a name="line-798"></a>
+<a name="line-799"></a> <span class="n">QAction</span><span class="o">*</span> <span class="k">const</span> <span class="n">senderAction</span> <span class="o">=</span> <span class="n">qobject_cast</span><span class="o">&lt;</span><span class="n">QAction</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">sender</span><span class="p">());</span>
+<a name="line-800"></a> <span class="n">QString</span> <span class="n">currentSpacerName</span> <span class="o">=</span> <span class="n">senderAction</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">().</span><span class="n">toString</span><span class="p">();</span>
+<a name="line-801"></a>
+<a name="line-802"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">addSpacerTag</span><span class="p">(</span><span class="n">baseIndex</span><span class="p">,</span> <span class="n">currentSpacerName</span><span class="p">);</span>
+<a name="line-803"></a><span class="p">}</span>
+<a name="line-804"></a>
+<a name="line-805"></a><span class="cm">/**</span>
+<a name="line-806"></a><span class="cm"> * Adds a new tag to the tag tree.</span>
+<a name="line-807"></a><span class="cm"> */</span>
+<a name="line-808"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">slotAddCustomizedSpacer</span><span class="p">()</span>
+<a name="line-809"></a><span class="p">{</span>
+<a name="line-810"></a> <span class="n">QModelIndex</span> <span class="n">baseIndex</span><span class="p">;</span>
+<a name="line-811"></a>
+<a name="line-812"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currentTagTreeIndex</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
+<a name="line-813"></a> <span class="p">{</span>
+<a name="line-814"></a> <span class="n">baseIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentTagTreeIndex</span><span class="p">;</span>
+<a name="line-815"></a> <span class="p">}</span>
+<a name="line-816"></a> <span class="k">else</span>
+<a name="line-817"></a> <span class="p">{</span>
+<a name="line-818"></a> <span class="n">baseIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagSelectionModel</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">();</span>
+<a name="line-819"></a> <span class="p">}</span>
+<a name="line-820"></a>
+<a name="line-821"></a> <span class="kt">bool</span> <span class="n">ok</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-822"></a> <span class="n">QString</span> <span class="n">textString</span> <span class="o">=</span> <span class="n">QInputDialog</span><span class="o">::</span><span class="n">getText</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@title:window&quot;</span><span class="p">,</span> <span class="s">&quot;Add new tag:&quot;</span><span class="p">),</span>
+<a name="line-823"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Select a name for the new tag:&quot;</span><span class="p">),</span>
+<a name="line-824"></a> <span class="n">QLineEdit</span><span class="o">::</span><span class="n">Normal</span><span class="p">,</span> <span class="n">QString</span><span class="p">(),</span> <span class="o">&amp;</span><span class="n">ok</span><span class="p">);</span>
+<a name="line-825"></a>
+<a name="line-826"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ok</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">textString</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-827"></a> <span class="p">{</span>
+<a name="line-828"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">addSpacerTag</span><span class="p">(</span><span class="n">baseIndex</span><span class="p">,</span> <span class="n">textString</span><span class="p">);</span>
+<a name="line-829"></a> <span class="p">}</span>
+<a name="line-830"></a><span class="p">}</span>
+<a name="line-831"></a>
+<a name="line-832"></a><span class="cm">/**</span>
+<a name="line-833"></a><span class="cm"> * Removes a tag from tag tree.</span>
+<a name="line-834"></a><span class="cm"> * Note: If the tag is an external, it is no more deleted.</span>
+<a name="line-835"></a><span class="cm"> */</span>
+<a name="line-836"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">slotRemoveTag</span><span class="p">()</span>
+<a name="line-837"></a><span class="p">{</span>
+<a name="line-838"></a> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">baseIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagSelectionModel</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">();</span>
+<a name="line-839"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">deleteTag</span><span class="p">(</span><span class="n">baseIndex</span><span class="p">);</span>
+<a name="line-840"></a><span class="p">}</span>
+<a name="line-841"></a>
+<a name="line-842"></a><span class="cm">/**</span>
+<a name="line-843"></a><span class="cm"> * Removes all spacers.</span>
+<a name="line-844"></a><span class="cm"> */</span>
+<a name="line-845"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">slotRemoveAllSpacers</span><span class="p">()</span>
+<a name="line-846"></a><span class="p">{</span>
+<a name="line-847"></a> <span class="n">QString</span> <span class="n">whatShouldRemove</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Spacers&quot;</span><span class="p">);</span>
+<a name="line-848"></a> <span class="n">QModelIndex</span> <span class="n">baseIndex</span><span class="p">;</span>
+<a name="line-849"></a>
+<a name="line-850"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currentTagTreeIndex</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
+<a name="line-851"></a> <span class="p">{</span>
+<a name="line-852"></a> <span class="n">baseIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentTagTreeIndex</span><span class="p">;</span>
+<a name="line-853"></a> <span class="p">}</span>
+<a name="line-854"></a> <span class="k">else</span>
+<a name="line-855"></a> <span class="p">{</span>
+<a name="line-856"></a> <span class="n">baseIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagSelectionModel</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">();</span>
+<a name="line-857"></a> <span class="p">}</span>
+<a name="line-858"></a>
+<a name="line-859"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">deleteAllSpacersOrNewTags</span><span class="p">(</span><span class="n">baseIndex</span><span class="p">,</span> <span class="n">TypeSpacer</span><span class="p">);</span>
+<a name="line-860"></a><span class="p">}</span>
+<a name="line-861"></a>
+<a name="line-862"></a><span class="cm">/**</span>
+<a name="line-863"></a><span class="cm"> * Re-adds all deleted tags based on Undo/Redo widget.</span>
+<a name="line-864"></a><span class="cm"> */</span>
+<a name="line-865"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">slotReaddNewTags</span><span class="p">()</span>
+<a name="line-866"></a><span class="p">{</span>
+<a name="line-867"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">row</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">row</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">row</span><span class="p">)</span>
+<a name="line-868"></a> <span class="p">{</span>
+<a name="line-869"></a> <span class="n">GPSItemContainer</span><span class="o">*</span> <span class="k">const</span> <span class="n">currentItem</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="o">-&gt;</span><span class="n">itemFromIndex</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="mi">0</span><span class="p">));</span>
+<a name="line-870"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">tagAddresses</span> <span class="o">=</span> <span class="n">currentItem</span><span class="o">-&gt;</span><span class="n">getTagList</span><span class="p">();</span>
+<a name="line-871"></a>
+<a name="line-872"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">tagAddresses</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-873"></a> <span class="p">{</span>
+<a name="line-874"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">readdNewTags</span><span class="p">(</span><span class="n">tagAddresses</span><span class="p">);</span>
+<a name="line-875"></a> <span class="p">}</span>
+<a name="line-876"></a> <span class="p">}</span>
+<a name="line-877"></a><span class="p">}</span>
+<a name="line-878"></a>
+<a name="line-879"></a><span class="cm">/**</span>
+<a name="line-880"></a><span class="cm"> * Deletes and re-adds all new added tags.</span>
+<a name="line-881"></a><span class="cm"> */</span>
+<a name="line-882"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">slotRegenerateNewTags</span><span class="p">()</span>
+<a name="line-883"></a><span class="p">{</span>
+<a name="line-884"></a> <span class="n">QModelIndex</span> <span class="n">baseIndex</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-885"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">deleteAllSpacersOrNewTags</span><span class="p">(</span><span class="n">baseIndex</span><span class="p">,</span> <span class="n">TypeNewChild</span><span class="p">);</span>
+<a name="line-886"></a>
+<a name="line-887"></a> <span class="n">slotReaddNewTags</span><span class="p">();</span>
+<a name="line-888"></a><span class="p">}</span>
+<a name="line-889"></a>
+<a name="line-890"></a><span class="cm">/**</span>
+<a name="line-891"></a><span class="cm"> * Adds all address elements below the selected tag. The address ellements are order by area size.</span>
+<a name="line-892"></a><span class="cm"> * For example: country &gt; state &gt; state district &gt; city ...</span>
+<a name="line-893"></a><span class="cm"> */</span>
+<a name="line-894"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">slotAddAllAddressElementsToTag</span><span class="p">()</span>
+<a name="line-895"></a><span class="p">{</span>
+<a name="line-896"></a> <span class="n">QModelIndex</span> <span class="n">baseIndex</span><span class="p">;</span>
+<a name="line-897"></a>
+<a name="line-898"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currentTagTreeIndex</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
+<a name="line-899"></a> <span class="p">{</span>
+<a name="line-900"></a> <span class="n">baseIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentTagTreeIndex</span><span class="p">;</span>
+<a name="line-901"></a> <span class="p">}</span>
+<a name="line-902"></a> <span class="k">else</span>
+<a name="line-903"></a> <span class="p">{</span>
+<a name="line-904"></a> <span class="n">baseIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagSelectionModel</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">();</span>
+<a name="line-905"></a> <span class="p">}</span>
+<a name="line-906"></a>
+<a name="line-907"></a> <span class="n">QStringList</span> <span class="n">spacerList</span><span class="p">;</span>
+<a name="line-908"></a>
+<a name="line-909"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span><span class="o">-&gt;</span><span class="n">backendName</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;OSM&quot;</span><span class="p">))</span>
+<a name="line-910"></a> <span class="p">{</span>
+<a name="line-911"></a> <span class="c1">/// @todo Why are these wrapped in QString?</span>
+<a name="line-912"></a>
+<a name="line-913"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Country}&quot;</span><span class="p">));</span>
+<a name="line-914"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{State}&quot;</span><span class="p">));</span>
+<a name="line-915"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{State district}&quot;</span><span class="p">));</span>
+<a name="line-916"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{County}&quot;</span><span class="p">));</span>
+<a name="line-917"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{City}&quot;</span><span class="p">));</span>
+<a name="line-918"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{City district}&quot;</span><span class="p">));</span>
+<a name="line-919"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Suburb}&quot;</span><span class="p">));</span>
+<a name="line-920"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Town}&quot;</span><span class="p">));</span>
+<a name="line-921"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Village}&quot;</span><span class="p">));</span>
+<a name="line-922"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Hamlet}&quot;</span><span class="p">));</span>
+<a name="line-923"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Street}&quot;</span><span class="p">));</span>
+<a name="line-924"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{House number}&quot;</span><span class="p">));</span>
+<a name="line-925"></a> <span class="p">}</span>
+<a name="line-926"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span><span class="o">-&gt;</span><span class="n">backendName</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Geonames&quot;</span><span class="p">))</span>
+<a name="line-927"></a> <span class="p">{</span>
+<a name="line-928"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Country}&quot;</span><span class="p">));</span>
+<a name="line-929"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Place}&quot;</span><span class="p">));</span>
+<a name="line-930"></a> <span class="p">}</span>
+<a name="line-931"></a> <span class="k">else</span>
+<a name="line-932"></a> <span class="p">{</span>
+<a name="line-933"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{LAU1}&quot;</span><span class="p">));</span>
+<a name="line-934"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{LAU2}&quot;</span><span class="p">));</span>
+<a name="line-935"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{City}&quot;</span><span class="p">));</span>
+<a name="line-936"></a> <span class="p">}</span>
+<a name="line-937"></a>
+<a name="line-938"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">addAllSpacersToTag</span><span class="p">(</span><span class="n">baseIndex</span><span class="p">,</span> <span class="n">spacerList</span><span class="p">,</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-939"></a><span class="p">}</span>
+<a name="line-940"></a>
+<a name="line-941"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">slotRGCanceled</span><span class="p">()</span>
+<a name="line-942"></a><span class="p">{</span>
+<a name="line-943"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span><span class="p">)</span>
+<a name="line-944"></a> <span class="p">{</span>
+<a name="line-945"></a> <span class="c1">// the undo command object is not available, therefore</span>
+<a name="line-946"></a> <span class="c1">// RG has probably been finished already</span>
+<a name="line-947"></a>
+<a name="line-948"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-949"></a> <span class="p">}</span>
+<a name="line-950"></a>
+<a name="line-951"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">receivedRGCount</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-952"></a> <span class="p">{</span>
+<a name="line-953"></a> <span class="c1">// Before we abort, ask the user whether he wants to discard</span>
+<a name="line-954"></a> <span class="c1">// the information obtained so far.</span>
+<a name="line-955"></a>
+<a name="line-956"></a> <span class="c1">// ATTENTION: While we ask the question, the RG backend continues running</span>
+<a name="line-957"></a> <span class="c1">// and sends information about new images to this widget.</span>
+<a name="line-958"></a> <span class="c1">// This means that RG might finish while we ask the question!!!</span>
+<a name="line-959"></a>
+<a name="line-960"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentlyAskingCancelQuestion</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-961"></a>
+<a name="line-962"></a> <span class="k">const</span> <span class="n">QString</span> <span class="n">question</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;%1 out of %2 images have been reverse geocoded. &quot;</span>
+<a name="line-963"></a> <span class="s">&quot;Would you like to keep the tags which were &quot;</span>
+<a name="line-964"></a> <span class="s">&quot;already obtained?&quot;</span><span class="p">,</span>
+<a name="line-965"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">receivedRGCount</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestedRGCount</span><span class="p">);</span>
+<a name="line-966"></a>
+<a name="line-967"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">result</span> <span class="o">=</span> <span class="n">DMessageBox</span><span class="o">::</span><span class="n">showYesNo</span><span class="p">(</span><span class="n">QMessageBox</span><span class="o">::</span><span class="n">Warning</span><span class="p">,</span> <span class="k">this</span><span class="p">,</span>
+<a name="line-968"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Abort reverse geocoding?&quot;</span><span class="p">),</span>
+<a name="line-969"></a> <span class="n">question</span><span class="p">);</span>
+<a name="line-970"></a>
+<a name="line-971"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentlyAskingCancelQuestion</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-972"></a>
+<a name="line-973"></a> <span class="k">if</span> <span class="p">(</span><span class="n">result</span> <span class="o">==</span> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">Cancel</span><span class="p">)</span>
+<a name="line-974"></a> <span class="p">{</span>
+<a name="line-975"></a> <span class="c1">// continue</span>
+<a name="line-976"></a>
+<a name="line-977"></a> <span class="c1">// did RG finish while we asked the question?</span>
+<a name="line-978"></a>
+<a name="line-979"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">receivedRGCount</span><span class="o">==</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">requestedRGCount</span><span class="p">)</span>
+<a name="line-980"></a> <span class="p">{</span>
+<a name="line-981"></a> <span class="c1">// the undo data was delayed, now send it</span>
+<a name="line-982"></a>
+<a name="line-983"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span><span class="p">)</span>
+<a name="line-984"></a> <span class="p">{</span>
+<a name="line-985"></a> <span class="n">emit</span> <span class="n">signalUndoCommand</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span><span class="p">);</span>
+<a name="line-986"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-987"></a> <span class="p">}</span>
+<a name="line-988"></a>
+<a name="line-989"></a> <span class="c1">// unlock the UI</span>
+<a name="line-990"></a>
+<a name="line-991"></a> <span class="n">emit</span> <span class="n">signalSetUIEnabled</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-992"></a> <span class="p">}</span>
+<a name="line-993"></a>
+<a name="line-994"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-995"></a> <span class="p">}</span>
+<a name="line-996"></a>
+<a name="line-997"></a> <span class="k">if</span> <span class="p">(</span><span class="n">result</span> <span class="o">==</span> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">No</span><span class="p">)</span>
+<a name="line-998"></a> <span class="p">{</span>
+<a name="line-999"></a> <span class="c1">// discard the tags</span>
+<a name="line-1000"></a>
+<a name="line-1001"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span><span class="o">-&gt;</span><span class="n">undo</span><span class="p">();</span>
+<a name="line-1002"></a> <span class="p">}</span>
+<a name="line-1003"></a>
+<a name="line-1004"></a> <span class="k">if</span> <span class="p">(</span><span class="n">result</span> <span class="o">==</span> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">Yes</span><span class="p">)</span>
+<a name="line-1005"></a> <span class="p">{</span>
+<a name="line-1006"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span><span class="p">)</span>
+<a name="line-1007"></a> <span class="p">{</span>
+<a name="line-1008"></a> <span class="n">emit</span> <span class="n">signalUndoCommand</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span><span class="p">);</span>
+<a name="line-1009"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-1010"></a> <span class="p">}</span>
+<a name="line-1011"></a> <span class="p">}</span>
+<a name="line-1012"></a> <span class="p">}</span>
+<a name="line-1013"></a>
+<a name="line-1014"></a> <span class="c1">// clean up the RG request:</span>
+<a name="line-1015"></a>
+<a name="line-1016"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span><span class="o">-&gt;</span><span class="n">cancelRequests</span><span class="p">();</span>
+<a name="line-1017"></a>
+<a name="line-1018"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span><span class="p">)</span>
+<a name="line-1019"></a> <span class="p">{</span>
+<a name="line-1020"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span><span class="p">;</span>
+<a name="line-1021"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-1022"></a> <span class="p">}</span>
+<a name="line-1023"></a>
+<a name="line-1024"></a> <span class="n">emit</span> <span class="n">signalSetUIEnabled</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-1025"></a><span class="p">}</span>
+<a name="line-1026"></a>
+<a name="line-1027"></a><span class="p">}</span> <span class="c1">// namespace Digikam</span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/2.html b/static/reports/cppcheck/master/2.html
index c9d7f284a..96969bc51 100644
--- a/static/reports/cppcheck/master/2.html
+++ b/static/reports/cppcheck/master/2.html
@@ -1,1245 +1,1245 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/dplugins/generic/metadata/metadataedit/xmp/xmpproperties.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/dplugins/generic/metadata/metadataedit/xmp/xmpproperties.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> xmpproperties.cpp</p>
<a href='2.html#line-328'> shadowVar 328</a><a href='2.html#line-328'> shadowVar 328</a><a href='2.html#line-328'> shadowVar 328</a><a href='2.html#line-339'> shadowVar 339</a><a href='2.html#line-384'> shadowVar 384</a><a href='2.html#line-408'> shadowVar 408</a>
</div>
<div id="content">
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
<a name="line-6"></a><span class="cm"> * Date : 2007-10-24</span>
<a name="line-7"></a><span class="cm"> * Description : XMP workflow status properties settings page.</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2007-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&gt;</span>
<a name="line-10"></a><span class="cm"> *</span>
<a name="line-11"></a><span class="cm"> * This program is free software; you can redistribute it</span>
<a name="line-12"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
<a name="line-13"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
<a name="line-14"></a><span class="cm"> * either version 2, or (at your option) any later version.</span>
<a name="line-15"></a><span class="cm"> *</span>
<a name="line-16"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
<a name="line-17"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="line-18"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
<a name="line-19"></a><span class="cm"> * GNU General Public License for more details.</span>
<a name="line-20"></a><span class="cm"> *</span>
<a name="line-21"></a><span class="cm"> * ============================================================ */</span>
<a name="line-22"></a>
<a name="line-23"></a><span class="cp">#include</span> <span class="cpf">&quot;xmpproperties.h&quot;</span><span class="cp"></span>
<a name="line-24"></a>
<a name="line-25"></a><span class="c1">// Qt includes</span>
<a name="line-26"></a>
<a name="line-27"></a><span class="cp">#include</span> <span class="cpf">&lt;QCheckBox&gt;</span><span class="cp"></span>
<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;QPushButton&gt;</span><span class="cp"></span>
<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QGridLayout&gt;</span><span class="cp"></span>
<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QApplication&gt;</span><span class="cp"></span>
<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QStyle&gt;</span><span class="cp"></span>
<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QComboBox&gt;</span><span class="cp"></span>
<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QLineEdit&gt;</span><span class="cp"></span>
<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QTextEdit&gt;</span><span class="cp"></span>
<a name="line-35"></a>
<a name="line-36"></a><span class="c1">// KDE includes</span>
<a name="line-37"></a>
<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
<a name="line-39"></a>
<a name="line-40"></a><span class="c1">// Local includes</span>
<a name="line-41"></a>
<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&quot;dlayoutbox.h&quot;</span><span class="cp"></span>
<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&quot;squeezedcombobox.h&quot;</span><span class="cp"></span>
<a name="line-44"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
<a name="line-45"></a><span class="cp">#include</span> <span class="cpf">&quot;altlangstringedit.h&quot;</span><span class="cp"></span>
<a name="line-46"></a><span class="cp">#include</span> <span class="cpf">&quot;metadatacheckbox.h&quot;</span><span class="cp"></span>
<a name="line-47"></a><span class="cp">#include</span> <span class="cpf">&quot;multivaluesedit.h&quot;</span><span class="cp"></span>
<a name="line-48"></a><span class="cp">#include</span> <span class="cpf">&quot;objectattributesedit.h&quot;</span><span class="cp"></span>
<a name="line-49"></a><span class="cp">#include</span> <span class="cpf">&quot;dmetadata.h&quot;</span><span class="cp"></span>
<a name="line-50"></a><span class="cp">#include</span> <span class="cpf">&quot;dexpanderbox.h&quot;</span><span class="cp"></span>
<a name="line-51"></a>
<a name="line-52"></a><span class="k">using</span> <span class="k">namespace</span> <span class="n">Digikam</span><span class="p">;</span>
<a name="line-53"></a>
<a name="line-54"></a><span class="k">namespace</span> <span class="n">DigikamGenericMetadataEditPlugin</span>
<a name="line-55"></a><span class="p">{</span>
<a name="line-56"></a>
<a name="line-57"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">XMPProperties</span><span class="o">::</span><span class="n">Private</span>
<a name="line-58"></a><span class="p">{</span>
<a name="line-59"></a><span class="k">public</span><span class="o">:</span>
<a name="line-60"></a>
<a name="line-61"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
<a name="line-62"></a> <span class="p">{</span>
<a name="line-63"></a> <span class="n">priorityCB</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-64"></a> <span class="n">objectTypeCB</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-65"></a> <span class="n">priorityCheck</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-66"></a> <span class="n">objectAttributeCheck</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-67"></a> <span class="n">sceneEdit</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-68"></a> <span class="n">objectTypeEdit</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-69"></a> <span class="n">objectAttributeEdit</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-70"></a> <span class="n">objectAttributeCB</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-71"></a> <span class="n">languageEdit</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-72"></a> <span class="n">originalTransEdit</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-73"></a> <span class="n">originalTransCheck</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-74"></a>
<a name="line-75"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;010100&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Headshot&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-76"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;010200&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Half-length&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-77"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;010300&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Full-length&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-78"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;010400&quot;</span><span class="p">),</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Side view of a person&quot;</span><span class="p">,</span> <span class="s">&quot;Profile&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-79"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;010500&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Rear view&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-80"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;010600&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Single&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-81"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;010700&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Couple&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-82"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;010800&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Two&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-83"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;010900&quot;</span><span class="p">),</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;group of people&quot;</span><span class="p">,</span> <span class="s">&quot;Group&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-84"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;011000&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;General view&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-85"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;011100&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Panoramic view&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-86"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;011200&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Aerial view&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-87"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;011300&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Under-water&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-88"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;011400&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Night scene&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-89"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;011500&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Satellite&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-90"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;011600&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Exterior view&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-91"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;011700&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Interior view&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-92"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;011800&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Close-up&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-93"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;011900&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Action&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-94"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;012000&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Performing&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-95"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;012100&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Posing&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-96"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;012200&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Symbolic&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-97"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;012300&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Off-beat&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-98"></a> <span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;012400&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Movie scene&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-99"></a>
<a name="line-100"></a> <span class="n">typeCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Advisory&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Advisory&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-101"></a> <span class="n">typeCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Alert&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Alert&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-102"></a> <span class="n">typeCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Catalog&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Catalog&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-103"></a> <span class="n">typeCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Data&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Data&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-104"></a> <span class="n">typeCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Document&quot;</span><span class="p">),</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;type is a document&quot;</span><span class="p">,</span> <span class="s">&quot;Document&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-105"></a> <span class="n">typeCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;DTD&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;DTD&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-106"></a> <span class="n">typeCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Maintenance&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Maintenance&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-107"></a> <span class="n">typeCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;News&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;News&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-108"></a> <span class="n">typeCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;NewsManagementMode&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;News Management Mode&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-109"></a> <span class="n">typeCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Package&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Package&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-110"></a> <span class="n">typeCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Schema&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Schema&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-111"></a> <span class="n">typeCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Topic&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Topic&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-112"></a> <span class="n">typeCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;TopicSet&quot;</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Topic Set&quot;</span><span class="p">)</span> <span class="p">);</span>
<a name="line-113"></a>
<a name="line-114"></a> <span class="n">DMetadata</span><span class="o">::</span><span class="n">CountryCodeMap</span> <span class="n">map</span> <span class="o">=</span> <span class="n">DMetadata</span><span class="o">::</span><span class="n">countryCodeMap</span><span class="p">();</span>
<a name="line-115"></a>
<a name="line-116"></a> <span class="k">for</span> <span class="p">(</span><span class="n">DMetadata</span><span class="o">::</span><span class="n">CountryCodeMap</span><span class="o">::</span><span class="n">Iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">map</span><span class="p">.</span><span class="n">begin</span><span class="p">()</span> <span class="p">;</span> <span class="n">it</span> <span class="o">!=</span> <span class="n">map</span><span class="p">.</span><span class="n">end</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">it</span><span class="p">)</span>
<a name="line-117"></a> <span class="p">{</span>
<a name="line-118"></a> <span class="n">languageCodeMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">it</span><span class="p">.</span><span class="n">key</span><span class="p">(),</span> <span class="n">it</span><span class="p">.</span><span class="n">value</span><span class="p">());</span>
<a name="line-119"></a> <span class="p">}</span>
<a name="line-120"></a> <span class="p">}</span>
<a name="line-121"></a>
<a name="line-122"></a> <span class="k">typedef</span> <span class="n">QMap</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">SceneCodeMap</span><span class="p">;</span>
<a name="line-123"></a> <span class="k">typedef</span> <span class="n">QMap</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">TypeCodeMap</span><span class="p">;</span>
<a name="line-124"></a> <span class="k">typedef</span> <span class="n">QMap</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">LanguageCodeMap</span><span class="p">;</span>
<a name="line-125"></a>
<a name="line-126"></a> <span class="n">SceneCodeMap</span> <span class="n">sceneCodeMap</span><span class="p">;</span>
<a name="line-127"></a> <span class="n">TypeCodeMap</span> <span class="n">typeCodeMap</span><span class="p">;</span>
<a name="line-128"></a> <span class="n">LanguageCodeMap</span> <span class="n">languageCodeMap</span><span class="p">;</span>
<a name="line-129"></a>
<a name="line-130"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">originalTransCheck</span><span class="p">;</span>
<a name="line-131"></a>
<a name="line-132"></a> <span class="n">QComboBox</span><span class="o">*</span> <span class="n">priorityCB</span><span class="p">;</span>
<a name="line-133"></a> <span class="n">QComboBox</span><span class="o">*</span> <span class="n">objectTypeCB</span><span class="p">;</span>
<a name="line-134"></a>
<a name="line-135"></a> <span class="n">QLineEdit</span><span class="o">*</span> <span class="n">objectAttributeEdit</span><span class="p">;</span>
<a name="line-136"></a> <span class="n">QLineEdit</span><span class="o">*</span> <span class="n">originalTransEdit</span><span class="p">;</span>
<a name="line-137"></a>
<a name="line-138"></a> <span class="n">MetadataCheckBox</span><span class="o">*</span> <span class="n">priorityCheck</span><span class="p">;</span>
<a name="line-139"></a> <span class="n">MetadataCheckBox</span><span class="o">*</span> <span class="n">objectAttributeCheck</span><span class="p">;</span>
<a name="line-140"></a>
<a name="line-141"></a> <span class="n">MultiValuesEdit</span><span class="o">*</span> <span class="n">sceneEdit</span><span class="p">;</span>
<a name="line-142"></a> <span class="n">MultiValuesEdit</span><span class="o">*</span> <span class="n">objectTypeEdit</span><span class="p">;</span>
<a name="line-143"></a> <span class="n">MultiValuesEdit</span><span class="o">*</span> <span class="n">languageEdit</span><span class="p">;</span>
<a name="line-144"></a>
<a name="line-145"></a> <span class="n">SqueezedComboBox</span><span class="o">*</span> <span class="n">objectAttributeCB</span><span class="p">;</span>
<a name="line-146"></a><span class="p">};</span>
<a name="line-147"></a>
<a name="line-148"></a><span class="n">XMPProperties</span><span class="o">::</span><span class="n">XMPProperties</span><span class="p">(</span><span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span><span class="p">)</span>
<a name="line-149"></a> <span class="o">:</span> <span class="n">QWidget</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span>
<a name="line-150"></a> <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">Private</span><span class="p">)</span>
<a name="line-151"></a><span class="p">{</span>
<a name="line-152"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">grid</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-153"></a>
<a name="line-154"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-155"></a>
<a name="line-156"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span> <span class="o">=</span> <span class="k">new</span> <span class="n">MultiValuesEdit</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Language:&quot;</span><span class="p">),</span>
<a name="line-157"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Select here the language of content.&quot;</span><span class="p">));</span>
<a name="line-158"></a>
<a name="line-159"></a> <span class="n">QStringList</span> <span class="n">list</span><span class="p">;</span>
<a name="line-160"></a>
<a name="line-161"></a> <span class="k">for</span> <span class="p">(</span><span class="n">Private</span><span class="o">::</span><span class="n">LanguageCodeMap</span><span class="o">::</span><span class="n">Iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageCodeMap</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
<a name="line-162"></a> <span class="n">it</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageCodeMap</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">it</span><span class="p">)</span>
<a name="line-163"></a> <span class="n">list</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1 - %2&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">it</span><span class="p">.</span><span class="n">key</span><span class="p">()).</span><span class="n">arg</span><span class="p">(</span><span class="n">it</span><span class="p">.</span><span class="n">value</span><span class="p">()));</span>
<a name="line-164"></a>
<a name="line-165"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">list</span><span class="p">);</span>
<a name="line-166"></a>
<a name="line-167"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-168"></a>
<a name="line-169"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCheck</span> <span class="o">=</span> <span class="k">new</span> <span class="n">MetadataCheckBox</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Priority:&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
<a name="line-170"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCB</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QComboBox</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-171"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCB</span><span class="o">-&gt;</span><span class="n">insertItem</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial urgency of content&quot;</span><span class="p">,</span> <span class="s">&quot;0: None&quot;</span><span class="p">));</span>
<a name="line-172"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCB</span><span class="o">-&gt;</span><span class="n">insertItem</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial urgency of content&quot;</span><span class="p">,</span> <span class="s">&quot;1: High&quot;</span><span class="p">));</span>
<a name="line-173"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCB</span><span class="o">-&gt;</span><span class="n">insertItem</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;2&quot;</span><span class="p">));</span>
<a name="line-174"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCB</span><span class="o">-&gt;</span><span class="n">insertItem</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;3&quot;</span><span class="p">));</span>
<a name="line-175"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCB</span><span class="o">-&gt;</span><span class="n">insertItem</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;4&quot;</span><span class="p">));</span>
<a name="line-176"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCB</span><span class="o">-&gt;</span><span class="n">insertItem</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial urgency of content&quot;</span><span class="p">,</span> <span class="s">&quot;5: Normal&quot;</span><span class="p">));</span>
<a name="line-177"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCB</span><span class="o">-&gt;</span><span class="n">insertItem</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;6&quot;</span><span class="p">));</span>
<a name="line-178"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCB</span><span class="o">-&gt;</span><span class="n">insertItem</span><span class="p">(</span><span class="mi">7</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;7&quot;</span><span class="p">));</span>
<a name="line-179"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCB</span><span class="o">-&gt;</span><span class="n">insertItem</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial urgency of content&quot;</span><span class="p">,</span> <span class="s">&quot;8: Low&quot;</span><span class="p">));</span>
<a name="line-180"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCB</span><span class="o">-&gt;</span><span class="n">insertItem</span><span class="p">(</span><span class="mi">9</span><span class="p">,</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial urgency of content&quot;</span><span class="p">,</span> <span class="s">&quot;9: User-defined&quot;</span><span class="p">));</span>
<a name="line-181"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCB</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Select here the editorial urgency of content.&quot;</span><span class="p">));</span>
<a name="line-182"></a>
<a name="line-183"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-184"></a>
<a name="line-185"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sceneEdit</span> <span class="o">=</span> <span class="k">new</span> <span class="n">MultiValuesEdit</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Scene:&quot;</span><span class="p">),</span>
<a name="line-186"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Select here the scene type of the content.&quot;</span><span class="p">));</span>
<a name="line-187"></a>
<a name="line-188"></a> <span class="n">QStringList</span> <span class="n">list2</span><span class="p">;</span>
<a name="line-189"></a>
<a name="line-190"></a> <span class="k">for</span> <span class="p">(</span><span class="n">Private</span><span class="o">::</span><span class="n">SceneCodeMap</span><span class="o">::</span><span class="n">Iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
<a name="line-191"></a> <span class="n">it</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sceneCodeMap</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">it</span><span class="p">)</span>
<a name="line-192"></a> <span class="n">list2</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1 - %2&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">it</span><span class="p">.</span><span class="n">key</span><span class="p">()).</span><span class="n">arg</span><span class="p">(</span><span class="n">it</span><span class="p">.</span><span class="n">value</span><span class="p">()));</span>
<a name="line-193"></a>
<a name="line-194"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sceneEdit</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">list2</span><span class="p">);</span>
<a name="line-195"></a>
<a name="line-196"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-197"></a>
<a name="line-198"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectTypeEdit</span> <span class="o">=</span> <span class="k">new</span> <span class="n">MultiValuesEdit</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Type:&quot;</span><span class="p">),</span>
<a name="line-199"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Select here the editorial type of the content.&quot;</span><span class="p">));</span>
<a name="line-200"></a>
<a name="line-201"></a> <span class="n">QStringList</span> <span class="n">list3</span><span class="p">;</span>
<a name="line-202"></a>
<a name="line-203"></a> <span class="k">for</span> <span class="p">(</span><span class="n">Private</span><span class="o">::</span><span class="n">TypeCodeMap</span><span class="o">::</span><span class="n">Iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">typeCodeMap</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
<a name="line-204"></a> <span class="n">it</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">typeCodeMap</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">it</span><span class="p">)</span>
<a name="line-205"></a> <span class="n">list3</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">it</span><span class="p">.</span><span class="n">value</span><span class="p">());</span>
<a name="line-206"></a>
<a name="line-207"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectTypeEdit</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">list3</span><span class="p">);</span>
<a name="line-208"></a>
<a name="line-209"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-210"></a>
<a name="line-211"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCheck</span> <span class="o">=</span> <span class="k">new</span> <span class="n">MetadataCheckBox</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Attribute:&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
<a name="line-212"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SqueezedComboBox</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-213"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeEdit</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLineEdit</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-214"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeEdit</span><span class="o">-&gt;</span><span class="n">setClearButtonEnabled</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-215"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeEdit</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Set here the editorial attribute description of the content.&quot;</span><span class="p">));</span>
<a name="line-216"></a>
<a name="line-217"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Select here the editorial attribute of the content.&quot;</span><span class="p">));</span>
<a name="line-218"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">addSqueezedItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;001 - &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial content attribute&quot;</span><span class="p">,</span> <span class="s">&quot;Current&quot;</span><span class="p">));</span>
<a name="line-219"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">addSqueezedItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;002 - &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial content attribute&quot;</span><span class="p">,</span> <span class="s">&quot;Analysis&quot;</span><span class="p">));</span>
<a name="line-220"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">addSqueezedItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;003 - &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial content attribute&quot;</span><span class="p">,</span> <span class="s">&quot;Archive material&quot;</span><span class="p">));</span>
<a name="line-221"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">addSqueezedItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;004 - &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial content attribute&quot;</span><span class="p">,</span> <span class="s">&quot;Background&quot;</span><span class="p">));</span>
<a name="line-222"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">addSqueezedItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;005 - &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial content attribute&quot;</span><span class="p">,</span> <span class="s">&quot;Feature&quot;</span><span class="p">));</span>
<a name="line-223"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">addSqueezedItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;006 - &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial content attribute&quot;</span><span class="p">,</span> <span class="s">&quot;Forecast&quot;</span><span class="p">));</span>
<a name="line-224"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">addSqueezedItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;007 - &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial content attribute&quot;</span><span class="p">,</span> <span class="s">&quot;History&quot;</span><span class="p">));</span>
<a name="line-225"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">addSqueezedItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;008 - &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial content attribute&quot;</span><span class="p">,</span> <span class="s">&quot;Obituary&quot;</span><span class="p">));</span>
<a name="line-226"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">addSqueezedItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;009 - &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial content attribute&quot;</span><span class="p">,</span> <span class="s">&quot;Opinion&quot;</span><span class="p">));</span>
<a name="line-227"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">addSqueezedItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;010 - &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial content attribute&quot;</span><span class="p">,</span> <span class="s">&quot;Polls &amp; Surveys&quot;</span><span class="p">));</span>
<a name="line-228"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">addSqueezedItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;011 - &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial content attribute&quot;</span><span class="p">,</span> <span class="s">&quot;Profile&quot;</span><span class="p">));</span>
<a name="line-229"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">addSqueezedItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;012 - &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial content attribute&quot;</span><span class="p">,</span> <span class="s">&quot;Results Listings &amp; Table&quot;</span><span class="p">));</span>
<a name="line-230"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">addSqueezedItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;013 - &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial content attribute&quot;</span><span class="p">,</span> <span class="s">&quot;Side bar &amp; Supporting information&quot;</span><span class="p">));</span>
<a name="line-231"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">addSqueezedItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;014 - &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial content attribute&quot;</span><span class="p">,</span> <span class="s">&quot;Summary&quot;</span><span class="p">));</span>
<a name="line-232"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">addSqueezedItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;015 - &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial content attribute&quot;</span><span class="p">,</span> <span class="s">&quot;Transcript &amp; Verbatim&quot;</span><span class="p">));</span>
<a name="line-233"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">addSqueezedItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;016 - &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial content attribute&quot;</span><span class="p">,</span> <span class="s">&quot;Interview&quot;</span><span class="p">));</span>
<a name="line-234"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">addSqueezedItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;017 - &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial content attribute&quot;</span><span class="p">,</span> <span class="s">&quot;From the Scene&quot;</span><span class="p">));</span>
<a name="line-235"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">addSqueezedItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;018 - &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial content attribute&quot;</span><span class="p">,</span> <span class="s">&quot;Retrospective&quot;</span><span class="p">));</span>
<a name="line-236"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">addSqueezedItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;019 - &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial content attribute&quot;</span><span class="p">,</span> <span class="s">&quot;Statistics&quot;</span><span class="p">));</span>
<a name="line-237"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">addSqueezedItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;020 - &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial content attribute&quot;</span><span class="p">,</span> <span class="s">&quot;Update&quot;</span><span class="p">));</span>
<a name="line-238"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">addSqueezedItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;021 - &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial content attribute&quot;</span><span class="p">,</span> <span class="s">&quot;Wrap-up&quot;</span><span class="p">));</span>
<a name="line-239"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">addSqueezedItem</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;022 - &quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;editorial content attribute&quot;</span><span class="p">,</span> <span class="s">&quot;Press Release&quot;</span><span class="p">));</span>
<a name="line-240"></a>
<a name="line-241"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-242"></a>
<a name="line-243"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">originalTransCheck</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Reference:&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
<a name="line-244"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">originalTransEdit</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLineEdit</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-245"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">originalTransEdit</span><span class="o">-&gt;</span><span class="n">setClearButtonEnabled</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-246"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">originalTransEdit</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Set here the original content transmission reference.&quot;</span><span class="p">));</span>
<a name="line-247"></a>
<a name="line-248"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-249"></a>
<a name="line-250"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">5</span><span class="p">);</span>
<a name="line-251"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCheck</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-252"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCB</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-253"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sceneEdit</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">5</span><span class="p">);</span>
<a name="line-254"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">objectTypeEdit</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">5</span><span class="p">);</span>
<a name="line-255"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="k">new</span> <span class="n">DLineWidget</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="k">this</span><span class="p">),</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">5</span><span class="p">);</span>
<a name="line-256"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCheck</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-257"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
<a name="line-258"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeEdit</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
<a name="line-259"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="k">new</span> <span class="n">DLineWidget</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="k">this</span><span class="p">),</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">5</span><span class="p">);</span>
<a name="line-260"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">originalTransCheck</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-261"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">originalTransEdit</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">);</span>
<a name="line-262"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">setRowStretch</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
<a name="line-263"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">setColumnStretch</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
<a name="line-264"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">setContentsMargins</span><span class="p">(</span><span class="n">QMargins</span><span class="p">());</span>
<a name="line-265"></a> <span class="n">grid</span><span class="o">-&gt;</span><span class="n">setSpacing</span><span class="p">(</span><span class="n">QApplication</span><span class="o">::</span><span class="n">style</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">pixelMetric</span><span class="p">(</span><span class="n">QStyle</span><span class="o">::</span><span class="n">PM_DefaultLayoutSpacing</span><span class="p">));</span>
<a name="line-266"></a>
<a name="line-267"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-268"></a>
<a name="line-269"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-270"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCB</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
<a name="line-271"></a>
<a name="line-272"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-273"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
<a name="line-274"></a>
<a name="line-275"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-276"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeEdit</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
<a name="line-277"></a>
<a name="line-278"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">originalTransCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-279"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">originalTransEdit</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
<a name="line-280"></a>
<a name="line-281"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-282"></a>
<a name="line-283"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()),</span>
<a name="line-284"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-285"></a>
<a name="line-286"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-287"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-288"></a>
<a name="line-289"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sceneEdit</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()),</span>
<a name="line-290"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-291"></a>
<a name="line-292"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">objectTypeEdit</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()),</span>
<a name="line-293"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-294"></a>
<a name="line-295"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-296"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-297"></a>
<a name="line-298"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">originalTransCheck</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-299"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-300"></a>
<a name="line-301"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-302"></a>
<a name="line-303"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCB</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">activated</span><span class="p">(</span><span class="kt">int</span><span class="p">)),</span>
<a name="line-304"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-305"></a>
<a name="line-306"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">activated</span><span class="p">(</span><span class="kt">int</span><span class="p">)),</span>
<a name="line-307"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-308"></a>
<a name="line-309"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeEdit</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">textChanged</span><span class="p">(</span><span class="n">QString</span><span class="p">)),</span>
<a name="line-310"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-311"></a>
<a name="line-312"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">originalTransEdit</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">textChanged</span><span class="p">(</span><span class="n">QString</span><span class="p">)),</span>
<a name="line-313"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalModified</span><span class="p">()));</span>
<a name="line-314"></a><span class="p">}</span>
<a name="line-315"></a>
<a name="line-316"></a><span class="n">XMPProperties</span><span class="o">::~</span><span class="n">XMPProperties</span><span class="p">()</span>
<a name="line-317"></a><span class="p">{</span>
<a name="line-318"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
<a name="line-319"></a><span class="p">}</span>
<a name="line-320"></a>
<a name="line-321"></a><span class="kt">void</span> <span class="n">XMPProperties</span><span class="o">::</span><span class="n">readMetadata</span><span class="p">(</span><span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">xmpData</span><span class="p">)</span>
<a name="line-322"></a><span class="p">{</span>
<a name="line-323"></a> <span class="n">blockSignals</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-324"></a> <span class="n">DMetadata</span> <span class="n">meta</span><span class="p">;</span>
<a name="line-325"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setXmp</span><span class="p">(</span><span class="n">xmpData</span><span class="p">);</span>
<a name="line-326"></a>
<a name="line-327"></a> <span class="kt">int</span> <span class="n">val</span><span class="p">;</span>
<a name="line-328"></a><span class="hll"> <span class="n">QString</span> <span class="n">data</span><span class="p">;</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span>
</span><a name="line-329"></a> <span class="n">QStringList</span> <span class="n">code</span><span class="p">,</span> <span class="n">list</span><span class="p">,</span> <span class="n">list2</span><span class="p">;</span>
<a name="line-330"></a> <span class="n">QString</span> <span class="n">dateStr</span><span class="p">,</span> <span class="n">timeStr</span><span class="p">;</span>
<a name="line-331"></a> <span class="n">DMetadata</span><span class="o">::</span><span class="n">AltLangMap</span> <span class="n">map</span><span class="p">;</span>
<a name="line-332"></a>
<a name="line-333"></a> <span class="c1">// ---------------------------------------------------------------</span>
<a name="line-334"></a>
<a name="line-335"></a> <span class="n">code</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getXmpTagStringBag</span><span class="p">(</span><span class="s">&quot;Xmp.dc.language&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-336"></a>
<a name="line-337"></a> <span class="k">for</span> <span class="p">(</span><span class="n">QStringList</span><span class="o">::</span><span class="n">Iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">code</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">it</span> <span class="o">!=</span> <span class="n">code</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">it</span><span class="p">)</span>
<a name="line-338"></a> <span class="p">{</span>
<a name="line-339"></a><span class="hll"> <span class="n">QStringList</span> <span class="n">data</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span><span class="o">-&gt;</span><span class="n">getData</span><span class="p">();</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-340"></a> <span class="n">QStringList</span><span class="o">::</span><span class="n">Iterator</span> <span class="n">it2</span><span class="p">;</span>
<a name="line-341"></a>
<a name="line-342"></a> <span class="k">for</span> <span class="p">(</span><span class="n">it2</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">it2</span> <span class="o">!=</span> <span class="n">data</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">it2</span><span class="p">)</span>
<a name="line-343"></a> <span class="p">{</span>
<a name="line-344"></a> <span class="k">if</span> <span class="p">((</span><span class="o">*</span><span class="n">it2</span><span class="p">).</span><span class="n">left</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="o">==</span> <span class="p">(</span><span class="o">*</span><span class="n">it</span><span class="p">))</span>
<a name="line-345"></a> <span class="p">{</span>
<a name="line-346"></a> <span class="n">list</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="o">*</span><span class="n">it2</span><span class="p">);</span>
<a name="line-347"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-348"></a> <span class="p">}</span>
<a name="line-349"></a> <span class="p">}</span>
<a name="line-350"></a>
<a name="line-351"></a> <span class="k">if</span> <span class="p">(</span><span class="n">it2</span> <span class="o">==</span> <span class="n">data</span><span class="p">.</span><span class="n">end</span><span class="p">())</span>
<a name="line-352"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span><span class="o">-&gt;</span><span class="n">setValid</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-353"></a> <span class="p">}</span>
<a name="line-354"></a>
<a name="line-355"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span><span class="o">-&gt;</span><span class="n">setValues</span><span class="p">(</span><span class="n">list</span><span class="p">);</span>
<a name="line-356"></a>
<a name="line-357"></a> <span class="c1">// ---------------------------------------------------------------</span>
<a name="line-358"></a>
<a name="line-359"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCB</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<a name="line-360"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-361"></a> <span class="n">data</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getXmpTagString</span><span class="p">(</span><span class="s">&quot;Xmp.photoshop.Urgency&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-362"></a>
<a name="line-363"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">data</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-364"></a> <span class="p">{</span>
<a name="line-365"></a> <span class="n">val</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">toInt</span><span class="p">();</span>
<a name="line-366"></a>
<a name="line-367"></a> <span class="k">if</span> <span class="p">(</span><span class="n">val</span> <span class="o">&gt;=</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="n">val</span> <span class="o">&lt;=</span> <span class="mi">9</span><span class="p">)</span>
<a name="line-368"></a> <span class="p">{</span>
<a name="line-369"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCB</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">val</span><span class="p">);</span>
<a name="line-370"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-371"></a> <span class="p">}</span>
<a name="line-372"></a> <span class="k">else</span>
<a name="line-373"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCheck</span><span class="o">-&gt;</span><span class="n">setValid</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-374"></a> <span class="p">}</span>
<a name="line-375"></a>
<a name="line-376"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCB</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-377"></a>
<a name="line-378"></a> <span class="c1">// ---------------------------------------------------------------</span>
<a name="line-379"></a>
<a name="line-380"></a> <span class="n">code</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getXmpTagStringBag</span><span class="p">(</span><span class="s">&quot;Xmp.iptc.Scene&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-381"></a>
<a name="line-382"></a> <span class="k">for</span> <span class="p">(</span><span class="n">QStringList</span><span class="o">::</span><span class="n">Iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">code</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">it</span> <span class="o">!=</span> <span class="n">code</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">it</span><span class="p">)</span>
<a name="line-383"></a> <span class="p">{</span>
<a name="line-384"></a><span class="hll"> <span class="n">QStringList</span> <span class="n">data</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sceneEdit</span><span class="o">-&gt;</span><span class="n">getData</span><span class="p">();</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-385"></a> <span class="n">QStringList</span><span class="o">::</span><span class="n">Iterator</span> <span class="n">it2</span><span class="p">;</span>
<a name="line-386"></a>
<a name="line-387"></a> <span class="k">for</span> <span class="p">(</span><span class="n">it2</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">it2</span> <span class="o">!=</span> <span class="n">data</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">it2</span><span class="p">)</span>
<a name="line-388"></a> <span class="p">{</span>
<a name="line-389"></a> <span class="k">if</span> <span class="p">((</span><span class="o">*</span><span class="n">it2</span><span class="p">).</span><span class="n">left</span><span class="p">(</span><span class="mi">6</span><span class="p">)</span> <span class="o">==</span> <span class="p">(</span><span class="o">*</span><span class="n">it</span><span class="p">))</span>
<a name="line-390"></a> <span class="p">{</span>
<a name="line-391"></a> <span class="n">list</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="o">*</span><span class="n">it2</span><span class="p">);</span>
<a name="line-392"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-393"></a> <span class="p">}</span>
<a name="line-394"></a> <span class="p">}</span>
<a name="line-395"></a>
<a name="line-396"></a> <span class="k">if</span> <span class="p">(</span><span class="n">it2</span> <span class="o">==</span> <span class="n">data</span><span class="p">.</span><span class="n">end</span><span class="p">())</span>
<a name="line-397"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sceneEdit</span><span class="o">-&gt;</span><span class="n">setValid</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-398"></a> <span class="p">}</span>
<a name="line-399"></a>
<a name="line-400"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sceneEdit</span><span class="o">-&gt;</span><span class="n">setValues</span><span class="p">(</span><span class="n">list</span><span class="p">);</span>
<a name="line-401"></a>
<a name="line-402"></a> <span class="c1">// ---------------------------------------------------------------</span>
<a name="line-403"></a>
<a name="line-404"></a> <span class="n">code</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getXmpTagStringBag</span><span class="p">(</span><span class="s">&quot;Xmp.dc.type&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-405"></a>
<a name="line-406"></a> <span class="k">for</span> <span class="p">(</span><span class="n">QStringList</span><span class="o">::</span><span class="n">Iterator</span> <span class="n">it3</span> <span class="o">=</span> <span class="n">code</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">it3</span> <span class="o">!=</span> <span class="n">code</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">it3</span><span class="p">)</span>
<a name="line-407"></a> <span class="p">{</span>
<a name="line-408"></a><span class="hll"> <span class="n">QStringList</span> <span class="n">data</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectTypeEdit</span><span class="o">-&gt;</span><span class="n">getData</span><span class="p">();</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-409"></a> <span class="n">QStringList</span><span class="o">::</span><span class="n">Iterator</span> <span class="n">it4</span><span class="p">;</span>
<a name="line-410"></a>
<a name="line-411"></a> <span class="k">for</span> <span class="p">(</span><span class="n">it4</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">it4</span> <span class="o">!=</span> <span class="n">data</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">it4</span><span class="p">)</span>
<a name="line-412"></a> <span class="p">{</span>
<a name="line-413"></a> <span class="k">if</span> <span class="p">((</span><span class="o">*</span><span class="n">it4</span><span class="p">)</span> <span class="o">==</span> <span class="p">(</span><span class="o">*</span><span class="n">it3</span><span class="p">))</span>
<a name="line-414"></a> <span class="p">{</span>
<a name="line-415"></a> <span class="n">list2</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="o">*</span><span class="n">it4</span><span class="p">);</span>
<a name="line-416"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-417"></a> <span class="p">}</span>
<a name="line-418"></a> <span class="p">}</span>
<a name="line-419"></a>
<a name="line-420"></a> <span class="k">if</span> <span class="p">(</span><span class="n">it4</span> <span class="o">==</span> <span class="n">data</span><span class="p">.</span><span class="n">end</span><span class="p">())</span>
<a name="line-421"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectTypeEdit</span><span class="o">-&gt;</span><span class="n">setValid</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-422"></a> <span class="p">}</span>
<a name="line-423"></a>
<a name="line-424"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectTypeEdit</span><span class="o">-&gt;</span><span class="n">setValues</span><span class="p">(</span><span class="n">list2</span><span class="p">);</span>
<a name="line-425"></a>
<a name="line-426"></a> <span class="c1">// ---------------------------------------------------------------</span>
<a name="line-427"></a>
<a name="line-428"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<a name="line-429"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeEdit</span><span class="o">-&gt;</span><span class="n">clear</span><span class="p">();</span>
<a name="line-430"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-431"></a> <span class="n">data</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getXmpTagString</span><span class="p">(</span><span class="s">&quot;Xmp.iptc.IntellectualGenre&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-432"></a>
<a name="line-433"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">data</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-434"></a> <span class="p">{</span>
<a name="line-435"></a> <span class="n">QString</span> <span class="n">attrSec</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">section</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;:&#39;</span><span class="p">),</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-436"></a>
<a name="line-437"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">attrSec</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-438"></a> <span class="p">{</span>
<a name="line-439"></a> <span class="kt">int</span> <span class="n">attr</span> <span class="o">=</span> <span class="n">attrSec</span><span class="p">.</span><span class="n">toInt</span><span class="p">()</span><span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<a name="line-440"></a>
<a name="line-441"></a> <span class="k">if</span> <span class="p">(</span><span class="n">attr</span> <span class="o">&gt;=</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="n">attr</span> <span class="o">&lt;</span> <span class="mi">23</span><span class="p">)</span>
<a name="line-442"></a> <span class="p">{</span>
<a name="line-443"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">attr</span><span class="p">);</span>
<a name="line-444"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeEdit</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">section</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;:&#39;</span><span class="p">),</span> <span class="o">-</span><span class="mi">1</span><span class="p">));</span>
<a name="line-445"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-446"></a> <span class="p">}</span>
<a name="line-447"></a> <span class="k">else</span>
<a name="line-448"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCheck</span><span class="o">-&gt;</span><span class="n">setValid</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-449"></a> <span class="p">}</span>
<a name="line-450"></a> <span class="p">}</span>
<a name="line-451"></a>
<a name="line-452"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-453"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeEdit</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-454"></a>
<a name="line-455"></a> <span class="c1">// ---------------------------------------------------------------</span>
<a name="line-456"></a>
<a name="line-457"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">originalTransEdit</span><span class="o">-&gt;</span><span class="n">clear</span><span class="p">();</span>
<a name="line-458"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">originalTransCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-459"></a> <span class="n">data</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getXmpTagString</span><span class="p">(</span><span class="s">&quot;Xmp.photoshop.TransmissionReference&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-460"></a>
<a name="line-461"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">data</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-462"></a> <span class="p">{</span>
<a name="line-463"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">originalTransEdit</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
<a name="line-464"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">originalTransCheck</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-465"></a> <span class="p">}</span>
<a name="line-466"></a>
<a name="line-467"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">originalTransEdit</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">originalTransCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-468"></a>
<a name="line-469"></a> <span class="c1">// ---------------------------------------------------------------</span>
<a name="line-470"></a>
<a name="line-471"></a> <span class="n">blockSignals</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-472"></a><span class="p">}</span>
<a name="line-473"></a>
<a name="line-474"></a><span class="kt">void</span> <span class="n">XMPProperties</span><span class="o">::</span><span class="n">applyMetadata</span><span class="p">(</span><span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">xmpData</span><span class="p">)</span>
<a name="line-475"></a><span class="p">{</span>
<a name="line-476"></a> <span class="n">QStringList</span> <span class="n">oldList</span><span class="p">,</span> <span class="n">newList</span><span class="p">;</span>
<a name="line-477"></a> <span class="n">DMetadata</span> <span class="n">meta</span><span class="p">;</span>
<a name="line-478"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setXmp</span><span class="p">(</span><span class="n">xmpData</span><span class="p">);</span>
<a name="line-479"></a>
<a name="line-480"></a> <span class="c1">// ---------------------------------------------------------------</span>
<a name="line-481"></a>
<a name="line-482"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span><span class="o">-&gt;</span><span class="n">getValues</span><span class="p">(</span><span class="n">oldList</span><span class="p">,</span> <span class="n">newList</span><span class="p">))</span>
<a name="line-483"></a> <span class="p">{</span>
<a name="line-484"></a> <span class="n">QStringList</span> <span class="n">newCode</span><span class="p">;</span>
<a name="line-485"></a>
<a name="line-486"></a> <span class="k">for</span> <span class="p">(</span><span class="n">QStringList</span><span class="o">::</span><span class="n">Iterator</span> <span class="n">it2</span> <span class="o">=</span> <span class="n">newList</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">it2</span> <span class="o">!=</span> <span class="n">newList</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">it2</span><span class="p">)</span>
<a name="line-487"></a> <span class="n">newCode</span><span class="p">.</span><span class="n">append</span><span class="p">((</span><span class="o">*</span><span class="n">it2</span><span class="p">).</span><span class="n">left</span><span class="p">(</span><span class="mi">2</span><span class="p">));</span>
<a name="line-488"></a>
<a name="line-489"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setXmpTagStringBag</span><span class="p">(</span><span class="s">&quot;Xmp.dc.language&quot;</span><span class="p">,</span> <span class="n">newCode</span><span class="p">);</span>
<a name="line-490"></a> <span class="p">}</span>
<a name="line-491"></a> <span class="k">else</span>
<a name="line-492"></a> <span class="p">{</span>
<a name="line-493"></a> <span class="n">meta</span><span class="p">.</span><span class="n">removeXmpTag</span><span class="p">(</span><span class="s">&quot;Xmp.dc.language&quot;</span><span class="p">);</span>
<a name="line-494"></a> <span class="p">}</span>
<a name="line-495"></a>
<a name="line-496"></a> <span class="c1">// ---------------------------------------------------------------</span>
<a name="line-497"></a>
<a name="line-498"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
<a name="line-499"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setXmpTagString</span><span class="p">(</span><span class="s">&quot;Xmp.photoshop.Urgency&quot;</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCB</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">()));</span>
<a name="line-500"></a> <span class="k">else</span> <span class="nf">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">priorityCheck</span><span class="o">-&gt;</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-501"></a> <span class="n">meta</span><span class="p">.</span><span class="n">removeXmpTag</span><span class="p">(</span><span class="s">&quot;Xmp.photoshop.Urgency&quot;</span><span class="p">);</span>
<a name="line-502"></a>
<a name="line-503"></a> <span class="c1">// ---------------------------------------------------------------</span>
<a name="line-504"></a>
<a name="line-505"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sceneEdit</span><span class="o">-&gt;</span><span class="n">getValues</span><span class="p">(</span><span class="n">oldList</span><span class="p">,</span> <span class="n">newList</span><span class="p">))</span>
<a name="line-506"></a> <span class="p">{</span>
<a name="line-507"></a> <span class="n">QStringList</span> <span class="n">newCode</span><span class="p">;</span>
<a name="line-508"></a>
<a name="line-509"></a> <span class="k">for</span> <span class="p">(</span><span class="n">QStringList</span><span class="o">::</span><span class="n">Iterator</span> <span class="n">it2</span> <span class="o">=</span> <span class="n">newList</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">it2</span> <span class="o">!=</span> <span class="n">newList</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">it2</span><span class="p">)</span>
<a name="line-510"></a> <span class="n">newCode</span><span class="p">.</span><span class="n">append</span><span class="p">((</span><span class="o">*</span><span class="n">it2</span><span class="p">).</span><span class="n">left</span><span class="p">(</span><span class="mi">6</span><span class="p">));</span>
<a name="line-511"></a>
<a name="line-512"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setXmpTagStringBag</span><span class="p">(</span><span class="s">&quot;Xmp.iptc.Scene&quot;</span><span class="p">,</span> <span class="n">newCode</span><span class="p">);</span>
<a name="line-513"></a> <span class="p">}</span>
<a name="line-514"></a> <span class="k">else</span>
<a name="line-515"></a> <span class="p">{</span>
<a name="line-516"></a> <span class="n">meta</span><span class="p">.</span><span class="n">removeXmpTag</span><span class="p">(</span><span class="s">&quot;Xmp.iptc.Scene&quot;</span><span class="p">);</span>
<a name="line-517"></a> <span class="p">}</span>
<a name="line-518"></a>
<a name="line-519"></a> <span class="c1">// ---------------------------------------------------------------</span>
<a name="line-520"></a>
<a name="line-521"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">objectTypeEdit</span><span class="o">-&gt;</span><span class="n">getValues</span><span class="p">(</span><span class="n">oldList</span><span class="p">,</span> <span class="n">newList</span><span class="p">))</span>
<a name="line-522"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setXmpTagStringBag</span><span class="p">(</span><span class="s">&quot;Xmp.dc.type&quot;</span><span class="p">,</span> <span class="n">newList</span><span class="p">);</span>
<a name="line-523"></a> <span class="k">else</span>
<a name="line-524"></a> <span class="n">meta</span><span class="p">.</span><span class="n">removeXmpTag</span><span class="p">(</span><span class="s">&quot;Xmp.dc.type&quot;</span><span class="p">);</span>
<a name="line-525"></a>
<a name="line-526"></a> <span class="c1">// ---------------------------------------------------------------</span>
<a name="line-527"></a>
<a name="line-528"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
<a name="line-529"></a> <span class="p">{</span>
<a name="line-530"></a> <span class="n">QString</span> <span class="n">objectAttribute</span><span class="p">;</span>
<a name="line-531"></a> <span class="n">objectAttribute</span><span class="p">.</span><span class="n">asprintf</span><span class="p">(</span><span class="s">&quot;%3d&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCB</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">()</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span>
<a name="line-532"></a> <span class="n">objectAttribute</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;:%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeEdit</span><span class="o">-&gt;</span><span class="n">text</span><span class="p">()));</span>
<a name="line-533"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setXmpTagString</span><span class="p">(</span><span class="s">&quot;Xmp.iptc.IntellectualGenre&quot;</span><span class="p">,</span> <span class="n">objectAttribute</span><span class="p">);</span>
<a name="line-534"></a> <span class="p">}</span>
<a name="line-535"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">objectAttributeCheck</span><span class="o">-&gt;</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-536"></a> <span class="p">{</span>
<a name="line-537"></a> <span class="n">meta</span><span class="p">.</span><span class="n">removeXmpTag</span><span class="p">(</span><span class="s">&quot;Xmp.iptc.IntellectualGenre&quot;</span><span class="p">);</span>
<a name="line-538"></a> <span class="p">}</span>
<a name="line-539"></a>
<a name="line-540"></a> <span class="c1">// ---------------------------------------------------------------</span>
<a name="line-541"></a>
<a name="line-542"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">originalTransCheck</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
<a name="line-543"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setXmpTagString</span><span class="p">(</span><span class="s">&quot;Xmp.photoshop.TransmissionReference&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">originalTransEdit</span><span class="o">-&gt;</span><span class="n">text</span><span class="p">());</span>
<a name="line-544"></a> <span class="k">else</span>
<a name="line-545"></a> <span class="n">meta</span><span class="p">.</span><span class="n">removeXmpTag</span><span class="p">(</span><span class="s">&quot;Xmp.photoshop.TransmissionReference&quot;</span><span class="p">);</span>
<a name="line-546"></a>
<a name="line-547"></a> <span class="n">xmpData</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getXmp</span><span class="p">();</span>
<a name="line-548"></a><span class="p">}</span>
<a name="line-549"></a>
<a name="line-550"></a><span class="p">}</span> <span class="c1">// namespace DigikamGenericMetadataEditPlugin</span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/20.html b/static/reports/cppcheck/master/20.html
index f35525f22..4ad84a8a4 100644
--- a/static/reports/cppcheck/master/20.html
+++ b/static/reports/cppcheck/master/20.html
@@ -1,2343 +1,2731 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/utilities/geolocation/geoiface/items/gpsitemcontainer.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/utilities/geolocation/geoiface/reversegeocoding/rgtagmodel.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> gpsitemcontainer.cpp</p>
-<a href='20.html#line-840'> shadowVar 840</a><a href='20.html#line-953'> shadowVar 953</a>
+ <p id="filename"><a href="index.html">Defects:</a> rgtagmodel.cpp</p>
+<a href='20.html#line-1002'> shadowVar 1002</a><a href='20.html#line-1103'> shadowVar 1103</a>
</div>
<div id="content">
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
-1099</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
+1099
+1100
+1101
+1102
+1103
+1104
+1105
+1106
+1107
+1108
+1109
+1110
+1111
+1112
+1113
+1114
+1115
+1116
+1117
+1118
+1119
+1120
+1121
+1122
+1123
+1124
+1125
+1126
+1127
+1128
+1129
+1130
+1131
+1132
+1133
+1134
+1135
+1136
+1137
+1138
+1139
+1140
+1141
+1142
+1143
+1144
+1145
+1146
+1147
+1148
+1149
+1150
+1151
+1152
+1153
+1154
+1155
+1156
+1157
+1158
+1159
+1160
+1161
+1162
+1163
+1164
+1165
+1166
+1167
+1168
+1169
+1170
+1171
+1172
+1173
+1174
+1175
+1176
+1177
+1178
+1179
+1180
+1181
+1182
+1183
+1184
+1185
+1186
+1187
+1188
+1189
+1190
+1191
+1192
+1193
+1194
+1195
+1196
+1197
+1198
+1199
+1200
+1201
+1202
+1203
+1204
+1205
+1206
+1207
+1208
+1209
+1210
+1211
+1212
+1213
+1214
+1215
+1216
+1217
+1218
+1219
+1220
+1221
+1222
+1223
+1224
+1225
+1226
+1227
+1228
+1229
+1230
+1231
+1232
+1233
+1234
+1235
+1236
+1237
+1238
+1239
+1240
+1241
+1242
+1243
+1244
+1245
+1246
+1247
+1248
+1249
+1250
+1251
+1252
+1253
+1254
+1255
+1256
+1257
+1258
+1259
+1260
+1261
+1262
+1263
+1264
+1265
+1266
+1267
+1268
+1269
+1270
+1271
+1272
+1273
+1274
+1275
+1276
+1277
+1278
+1279
+1280
+1281
+1282
+1283
+1284
+1285
+1286
+1287
+1288
+1289
+1290
+1291
+1292
+1293</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
-<a name="line-6"></a><span class="cm"> * Date : 2010-03-21</span>
-<a name="line-7"></a><span class="cm"> * Description : A container to hold GPS information about an item.</span>
+<a name="line-6"></a><span class="cm"> * Date : 2010-05-12</span>
+<a name="line-7"></a><span class="cm"> * Description : A model to hold information about image tags.</span>
<a name="line-8"></a><span class="cm"> *</span>
-<a name="line-9"></a><span class="cm"> * Copyright (C) 2010-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&gt;</span>
-<a name="line-10"></a><span class="cm"> * Copyright (C) 2010-2014 by Michael G. Hansen &lt;mike at mghansen dot de&gt;</span>
+<a name="line-9"></a><span class="cm"> * Copyright (C) 2010 by Michael G. Hansen &lt;mike at mghansen dot de&gt;</span>
+<a name="line-10"></a><span class="cm"> * Copyright (C) 2010 by Gabriel Voicu &lt;ping dot gabi at gmail dot com&gt;</span>
<a name="line-11"></a><span class="cm"> *</span>
<a name="line-12"></a><span class="cm"> * This program is free software; you can redistribute it</span>
<a name="line-13"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
<a name="line-14"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
<a name="line-15"></a><span class="cm"> * either version 2, or (at your option)</span>
<a name="line-16"></a><span class="cm"> * any later version.</span>
<a name="line-17"></a><span class="cm"> *</span>
<a name="line-18"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
<a name="line-19"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="line-20"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
<a name="line-21"></a><span class="cm"> * GNU General Public License for more details.</span>
<a name="line-22"></a><span class="cm"> *</span>
<a name="line-23"></a><span class="cm"> * ============================================================ */</span>
<a name="line-24"></a>
-<a name="line-25"></a><span class="cp">#include</span> <span class="cpf">&quot;gpsitemcontainer.h&quot;</span><span class="cp"></span>
+<a name="line-25"></a><span class="cp">#include</span> <span class="cpf">&quot;rgtagmodel.h&quot;</span><span class="cp"></span>
<a name="line-26"></a>
<a name="line-27"></a><span class="c1">// Qt includes</span>
<a name="line-28"></a>
-<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QBrush&gt;</span><span class="cp"></span>
-<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QFileInfo&gt;</span><span class="cp"></span>
-<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QScopedPointer&gt;</span><span class="cp"></span>
-<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QLocale&gt;</span><span class="cp"></span>
-<a name="line-33"></a>
-<a name="line-34"></a><span class="c1">// KDE includes</span>
-<a name="line-35"></a>
-<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
+<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QColor&gt;</span><span class="cp"></span>
+<a name="line-30"></a>
+<a name="line-31"></a><span class="c1">// KDE includes</span>
+<a name="line-32"></a>
+<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
+<a name="line-34"></a>
+<a name="line-35"></a><span class="k">namespace</span> <span class="n">Digikam</span>
+<a name="line-36"></a><span class="p">{</span>
<a name="line-37"></a>
-<a name="line-38"></a><span class="c1">// Local includes</span>
-<a name="line-39"></a>
-<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
-<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&quot;gpsitemmodel.h&quot;</span><span class="cp"></span>
-<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&quot;dmetadata.h&quot;</span><span class="cp"></span>
-<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&quot;metaenginesettings.h&quot;</span><span class="cp"></span>
-<a name="line-44"></a>
-<a name="line-45"></a><span class="k">namespace</span> <span class="n">Digikam</span>
-<a name="line-46"></a><span class="p">{</span>
-<a name="line-47"></a>
-<a name="line-48"></a><span class="kt">bool</span> <span class="n">setExifXmpTagDataVariant</span><span class="p">(</span><span class="n">DMetadata</span><span class="o">*</span> <span class="k">const</span> <span class="n">meta</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span><span class="o">*</span> <span class="k">const</span> <span class="n">exifTagName</span><span class="p">,</span>
-<a name="line-49"></a> <span class="k">const</span> <span class="kt">char</span><span class="o">*</span> <span class="k">const</span> <span class="n">xmpTagName</span><span class="p">,</span> <span class="k">const</span> <span class="n">QVariant</span><span class="o">&amp;</span> <span class="n">value</span><span class="p">)</span>
-<a name="line-50"></a><span class="p">{</span>
-<a name="line-51"></a> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">setExifTagVariant</span><span class="p">(</span><span class="n">exifTagName</span><span class="p">,</span> <span class="n">value</span><span class="p">);</span>
-<a name="line-52"></a>
-<a name="line-53"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span><span class="p">)</span>
-<a name="line-54"></a> <span class="p">{</span>
-<a name="line-55"></a> <span class="cm">/**</span>
-<a name="line-56"></a><span class="cm"> * @todo Here we save all data types as XMP Strings. Is that okay or do we have to store them as some other type?</span>
-<a name="line-57"></a><span class="cm"> */</span>
-<a name="line-58"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">value</span><span class="p">.</span><span class="n">type</span><span class="p">())</span>
-<a name="line-59"></a> <span class="p">{</span>
-<a name="line-60"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">Int</span><span class="p">:</span>
-<a name="line-61"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">UInt</span><span class="p">:</span>
-<a name="line-62"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">Bool</span><span class="p">:</span>
-<a name="line-63"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">LongLong</span><span class="p">:</span>
-<a name="line-64"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">ULongLong</span><span class="p">:</span>
-<a name="line-65"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">setXmpTagString</span><span class="p">(</span><span class="n">xmpTagName</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">value</span><span class="p">.</span><span class="n">toInt</span><span class="p">()));</span>
-<a name="line-66"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-67"></a>
-<a name="line-68"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">Double</span><span class="p">:</span>
-<a name="line-69"></a> <span class="p">{</span>
-<a name="line-70"></a> <span class="kt">long</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">;</span>
-<a name="line-71"></a> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">convertToRationalSmallDenominator</span><span class="p">(</span><span class="n">value</span><span class="p">.</span><span class="n">toDouble</span><span class="p">(),</span> <span class="o">&amp;</span><span class="n">num</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">den</span><span class="p">);</span>
-<a name="line-72"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">setXmpTagString</span><span class="p">(</span><span class="n">xmpTagName</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;%1/%2&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">num</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">den</span><span class="p">));</span>
-<a name="line-73"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-74"></a> <span class="p">}</span>
-<a name="line-75"></a>
-<a name="line-76"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">List</span><span class="p">:</span>
-<a name="line-77"></a> <span class="p">{</span>
-<a name="line-78"></a> <span class="kt">long</span> <span class="n">num</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-79"></a> <span class="kt">long</span> <span class="n">den</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-80"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QVariant</span><span class="o">&gt;</span> <span class="n">list</span> <span class="o">=</span> <span class="n">value</span><span class="p">.</span><span class="n">toList</span><span class="p">();</span>
-<a name="line-81"></a>
-<a name="line-82"></a> <span class="k">if</span> <span class="p">(</span><span class="n">list</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">&gt;=</span> <span class="mi">1</span><span class="p">)</span>
-<a name="line-83"></a> <span class="p">{</span>
-<a name="line-84"></a> <span class="n">num</span> <span class="o">=</span> <span class="n">list</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">toInt</span><span class="p">();</span>
-<a name="line-85"></a> <span class="p">}</span>
-<a name="line-86"></a>
-<a name="line-87"></a> <span class="k">if</span> <span class="p">(</span><span class="n">list</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">&gt;=</span> <span class="mi">2</span><span class="p">)</span>
-<a name="line-88"></a> <span class="p">{</span>
-<a name="line-89"></a> <span class="n">den</span> <span class="o">=</span> <span class="n">list</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">toInt</span><span class="p">();</span>
-<a name="line-90"></a> <span class="p">}</span>
-<a name="line-91"></a>
-<a name="line-92"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">setXmpTagString</span><span class="p">(</span><span class="n">xmpTagName</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;%1/%2&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">num</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">den</span><span class="p">));</span>
-<a name="line-93"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-94"></a> <span class="p">}</span>
-<a name="line-95"></a>
-<a name="line-96"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">Date</span><span class="p">:</span>
-<a name="line-97"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">DateTime</span><span class="p">:</span>
-<a name="line-98"></a> <span class="p">{</span>
-<a name="line-99"></a> <span class="n">QDateTime</span> <span class="n">dateTime</span> <span class="o">=</span> <span class="n">value</span><span class="p">.</span><span class="n">toDateTime</span><span class="p">();</span>
-<a name="line-100"></a>
-<a name="line-101"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">dateTime</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
-<a name="line-102"></a> <span class="p">{</span>
-<a name="line-103"></a> <span class="n">success</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-104"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-105"></a> <span class="p">}</span>
-<a name="line-106"></a>
-<a name="line-107"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">setXmpTagString</span><span class="p">(</span><span class="n">xmpTagName</span><span class="p">,</span> <span class="n">dateTime</span><span class="p">.</span><span class="n">toString</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yyyy:MM:dd hh:mm:ss&quot;</span><span class="p">)));</span>
-<a name="line-108"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-109"></a> <span class="p">}</span>
-<a name="line-110"></a>
-<a name="line-111"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">String</span><span class="p">:</span>
-<a name="line-112"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">Char</span><span class="p">:</span>
-<a name="line-113"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">setXmpTagString</span><span class="p">(</span><span class="n">xmpTagName</span><span class="p">,</span> <span class="n">value</span><span class="p">.</span><span class="n">toString</span><span class="p">());</span>
-<a name="line-114"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-115"></a>
-<a name="line-116"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">ByteArray</span><span class="p">:</span>
+<a name="line-38"></a><span class="cm">/**</span>
+<a name="line-39"></a><span class="cm"> * @class RGTagModel</span>
+<a name="line-40"></a><span class="cm"> *</span>
+<a name="line-41"></a><span class="cm"> * @brief The model that holds data for the tag tree displayed in ReverseGeocodingWidget</span>
+<a name="line-42"></a><span class="cm"> *</span>
+<a name="line-43"></a><span class="cm"> * The RGTagModel class is a wrapper above QAbstractItemModel. It helds data for the tag tree displayed in ReverseGeocodingWidget.</span>
+<a name="line-44"></a><span class="cm"> * The model gets the data from the tag model of host application and displays it in a QTreeView.</span>
+<a name="line-45"></a><span class="cm"> * It stores three type of tags: old tags (the tags that belong to the host&#39;s tag model), spacer tags (tags representing address elements</span>
+<a name="line-46"></a><span class="cm"> * or custom tags) and new tags (tags containing data retrieved from backend).</span>
+<a name="line-47"></a><span class="cm"> */</span>
+<a name="line-48"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">Private</span>
+<a name="line-49"></a><span class="p">{</span>
+<a name="line-50"></a><span class="k">public</span><span class="o">:</span>
+<a name="line-51"></a>
+<a name="line-52"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
+<a name="line-53"></a> <span class="o">:</span> <span class="n">tagModel</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-54"></a> <span class="n">rootTag</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-55"></a> <span class="n">startInsert</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span>
+<a name="line-56"></a> <span class="n">endInsert</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="line-57"></a> <span class="p">{</span>
+<a name="line-58"></a> <span class="p">}</span>
+<a name="line-59"></a>
+<a name="line-60"></a><span class="k">public</span><span class="o">:</span>
+<a name="line-61"></a>
+<a name="line-62"></a> <span class="n">QAbstractItemModel</span><span class="o">*</span> <span class="n">tagModel</span><span class="p">;</span>
+<a name="line-63"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="n">rootTag</span><span class="p">;</span>
+<a name="line-64"></a>
+<a name="line-65"></a> <span class="n">QModelIndex</span> <span class="n">parent</span><span class="p">;</span>
+<a name="line-66"></a> <span class="kt">int</span> <span class="n">startInsert</span><span class="p">;</span>
+<a name="line-67"></a> <span class="kt">int</span> <span class="n">endInsert</span><span class="p">;</span>
+<a name="line-68"></a>
+<a name="line-69"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">newTags</span><span class="p">;</span>
+<a name="line-70"></a>
+<a name="line-71"></a> <span class="n">QStringList</span> <span class="n">auxTagList</span><span class="p">;</span>
+<a name="line-72"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">Type</span><span class="o">&gt;</span> <span class="n">auxTagTypeList</span><span class="p">;</span>
+<a name="line-73"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QPersistentModelIndex</span><span class="o">&gt;</span> <span class="n">auxIndexList</span><span class="p">;</span>
+<a name="line-74"></a>
+<a name="line-75"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">savedSpacerList</span><span class="p">;</span>
+<a name="line-76"></a><span class="p">};</span>
+<a name="line-77"></a>
+<a name="line-78"></a><span class="cm">/**</span>
+<a name="line-79"></a><span class="cm"> * Constructor</span>
+<a name="line-80"></a><span class="cm"> * @param externalTagModel The tag model found in the host application.</span>
+<a name="line-81"></a><span class="cm"> * @param parent The parent object</span>
+<a name="line-82"></a><span class="cm"> */</span>
+<a name="line-83"></a><span class="n">RGTagModel</span><span class="o">::</span><span class="n">RGTagModel</span><span class="p">(</span><span class="n">QAbstractItemModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">externalTagModel</span><span class="p">,</span> <span class="n">QObject</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span><span class="p">)</span>
+<a name="line-84"></a> <span class="o">:</span> <span class="n">QAbstractItemModel</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span>
+<a name="line-85"></a> <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">Private</span><span class="p">)</span>
+<a name="line-86"></a><span class="p">{</span>
+<a name="line-87"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span> <span class="o">=</span> <span class="n">externalTagModel</span><span class="p">;</span>
+<a name="line-88"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TreeBranch</span><span class="p">();</span>
+<a name="line-89"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">=</span> <span class="n">TypeChild</span><span class="p">;</span>
+<a name="line-90"></a>
+<a name="line-91"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{Country}&quot;</span><span class="p">);</span>
+<a name="line-92"></a> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Part of a country&quot;</span><span class="p">,</span> <span class="s">&quot;{State}&quot;</span><span class="p">);</span>
+<a name="line-93"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{County}&quot;</span><span class="p">);</span>
+<a name="line-94"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{City}&quot;</span><span class="p">);</span>
+<a name="line-95"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{Town}&quot;</span><span class="p">);</span>
+<a name="line-96"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{Village}&quot;</span><span class="p">);</span>
+<a name="line-97"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{Hamlet}&quot;</span><span class="p">);</span>
+<a name="line-98"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{Street}&quot;</span><span class="p">);</span>
+<a name="line-99"></a>
+<a name="line-100"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">dataChanged</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="n">QModelIndex</span><span class="p">)),</span>
+<a name="line-101"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotSourceDataChanged</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="n">QModelIndex</span><span class="p">)));</span>
+<a name="line-102"></a>
+<a name="line-103"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">headerDataChanged</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">Orientation</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
+<a name="line-104"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotSourceHeaderDataChanged</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">Orientation</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)));</span>
+<a name="line-105"></a>
+<a name="line-106"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">columnsAboutToBeInserted</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
+<a name="line-107"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotColumnsAboutToBeInserted</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)));</span>
+<a name="line-108"></a>
+<a name="line-109"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">columnsAboutToBeMoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
+<a name="line-110"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotColumnsAboutToBeMoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">)));</span>
+<a name="line-111"></a>
+<a name="line-112"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">columnsAboutToBeRemoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
+<a name="line-113"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotColumnsAboutToBeRemoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)));</span>
+<a name="line-114"></a>
+<a name="line-115"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">columnsInserted</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
+<a name="line-116"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotColumnsInserted</span><span class="p">()));</span>
<a name="line-117"></a>
-<a name="line-118"></a> <span class="c1">/// @todo I don&#39;t know a straightforward way to convert a byte array to XMP</span>
-<a name="line-119"></a>
-<a name="line-120"></a> <span class="n">success</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-121"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-122"></a>
-<a name="line-123"></a> <span class="k">default</span><span class="o">:</span>
-<a name="line-124"></a> <span class="n">success</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-125"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-126"></a> <span class="p">}</span>
-<a name="line-127"></a> <span class="p">}</span>
-<a name="line-128"></a>
-<a name="line-129"></a> <span class="k">return</span> <span class="n">success</span><span class="p">;</span>
-<a name="line-130"></a><span class="p">}</span>
-<a name="line-131"></a>
-<a name="line-132"></a><span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">GPSItemContainer</span><span class="p">(</span><span class="k">const</span> <span class="n">QUrl</span><span class="o">&amp;</span> <span class="n">url</span><span class="p">)</span>
-<a name="line-133"></a> <span class="o">:</span> <span class="n">m_model</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-134"></a> <span class="n">m_url</span><span class="p">(</span><span class="n">url</span><span class="p">),</span>
-<a name="line-135"></a> <span class="n">m_dateTime</span><span class="p">(),</span>
-<a name="line-136"></a> <span class="n">m_dirty</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
-<a name="line-137"></a> <span class="n">m_gpsData</span><span class="p">(),</span>
-<a name="line-138"></a> <span class="n">m_savedState</span><span class="p">(),</span>
-<a name="line-139"></a> <span class="n">m_tagListDirty</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
-<a name="line-140"></a> <span class="n">m_tagList</span><span class="p">(),</span>
-<a name="line-141"></a> <span class="n">m_savedTagList</span><span class="p">(),</span>
-<a name="line-142"></a> <span class="n">m_writeXmpTags</span><span class="p">(</span><span class="nb">true</span><span class="p">)</span>
-<a name="line-143"></a><span class="p">{</span>
-<a name="line-144"></a><span class="p">}</span>
-<a name="line-145"></a>
-<a name="line-146"></a><span class="n">GPSItemContainer</span><span class="o">::~</span><span class="n">GPSItemContainer</span><span class="p">()</span>
-<a name="line-147"></a><span class="p">{</span>
-<a name="line-148"></a><span class="p">}</span>
-<a name="line-149"></a>
-<a name="line-150"></a><span class="n">DMetadata</span><span class="o">*</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">getMetadataForFile</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-151"></a><span class="p">{</span>
-<a name="line-152"></a> <span class="n">QScopedPointer</span><span class="o">&lt;</span><span class="n">DMetadata</span><span class="o">&gt;</span> <span class="n">meta</span><span class="p">(</span><span class="k">new</span> <span class="n">DMetadata</span><span class="p">);</span>
-<a name="line-153"></a>
-<a name="line-154"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">meta</span><span class="o">-&gt;</span><span class="n">load</span><span class="p">(</span><span class="n">m_url</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">()))</span>
-<a name="line-155"></a> <span class="p">{</span>
-<a name="line-156"></a> <span class="c1">// It is possible that no sidecar file has yet been created.</span>
-<a name="line-157"></a> <span class="c1">// If writing to sidecar file is activated, we ignore the loading error of the metadata.</span>
-<a name="line-158"></a>
-<a name="line-159"></a> <span class="k">if</span> <span class="p">(</span><span class="n">MetaEngineSettings</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">settings</span><span class="p">().</span><span class="n">metadataWritingMode</span> <span class="o">==</span> <span class="n">DMetadata</span><span class="o">::</span><span class="n">WRITE_TO_FILE_ONLY</span><span class="p">)</span>
-<a name="line-160"></a> <span class="p">{</span>
-<a name="line-161"></a> <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-162"></a> <span class="p">}</span>
-<a name="line-163"></a> <span class="p">}</span>
-<a name="line-164"></a>
-<a name="line-165"></a> <span class="k">return</span> <span class="n">meta</span><span class="p">.</span><span class="n">take</span><span class="p">();</span>
-<a name="line-166"></a><span class="p">}</span>
-<a name="line-167"></a>
-<a name="line-168"></a><span class="kt">int</span> <span class="n">getWarningLevelFromGPSDataContainer</span><span class="p">(</span><span class="k">const</span> <span class="n">GPSDataContainer</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
-<a name="line-169"></a><span class="p">{</span>
-<a name="line-170"></a> <span class="k">if</span> <span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">hasDop</span><span class="p">())</span>
-<a name="line-171"></a> <span class="p">{</span>
-<a name="line-172"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">dopValue</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">getDop</span><span class="p">();</span>
-<a name="line-173"></a>
-<a name="line-174"></a> <span class="k">if</span> <span class="p">(</span><span class="n">dopValue</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span>
-<a name="line-175"></a> <span class="p">{</span>
-<a name="line-176"></a> <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-177"></a> <span class="p">}</span>
-<a name="line-178"></a>
-<a name="line-179"></a> <span class="k">if</span> <span class="p">(</span><span class="n">dopValue</span> <span class="o">&lt;</span> <span class="mi">4</span><span class="p">)</span>
-<a name="line-180"></a> <span class="p">{</span>
-<a name="line-181"></a> <span class="k">return</span> <span class="mi">2</span><span class="p">;</span>
-<a name="line-182"></a> <span class="p">}</span>
-<a name="line-183"></a>
-<a name="line-184"></a> <span class="k">if</span> <span class="p">(</span><span class="n">dopValue</span> <span class="o">&lt;</span> <span class="mi">10</span><span class="p">)</span>
-<a name="line-185"></a> <span class="p">{</span>
-<a name="line-186"></a> <span class="k">return</span> <span class="mi">3</span><span class="p">;</span>
-<a name="line-187"></a> <span class="p">}</span>
+<a name="line-118"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">columnsMoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
+<a name="line-119"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotColumnsMoved</span><span class="p">()));</span>
+<a name="line-120"></a>
+<a name="line-121"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">columnsRemoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
+<a name="line-122"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotColumnsRemoved</span><span class="p">()));</span>
+<a name="line-123"></a>
+<a name="line-124"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">layoutAboutToBeChanged</span><span class="p">()),</span>
+<a name="line-125"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotLayoutAboutToBeChanged</span><span class="p">()));</span>
+<a name="line-126"></a>
+<a name="line-127"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">layoutChanged</span><span class="p">()),</span>
+<a name="line-128"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotLayoutChanged</span><span class="p">()));</span>
+<a name="line-129"></a>
+<a name="line-130"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">modelAboutToBeReset</span><span class="p">()),</span>
+<a name="line-131"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotModelAboutToBeReset</span><span class="p">()));</span>
+<a name="line-132"></a>
+<a name="line-133"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">rowsAboutToBeInserted</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
+<a name="line-134"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotRowsAboutToBeInserted</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)));</span>
+<a name="line-135"></a>
+<a name="line-136"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">rowsAboutToBeMoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
+<a name="line-137"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotRowsAboutToBeMoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">)));</span>
+<a name="line-138"></a>
+<a name="line-139"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">rowsAboutToBeRemoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
+<a name="line-140"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotRowsAboutToBeRemoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)));</span>
+<a name="line-141"></a>
+<a name="line-142"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">rowsInserted</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
+<a name="line-143"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotRowsInserted</span><span class="p">()));</span>
+<a name="line-144"></a>
+<a name="line-145"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">rowsMoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
+<a name="line-146"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotRowsMoved</span><span class="p">()));</span>
+<a name="line-147"></a>
+<a name="line-148"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">rowsRemoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
+<a name="line-149"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotRowsRemoved</span><span class="p">()));</span>
+<a name="line-150"></a><span class="p">}</span>
+<a name="line-151"></a>
+<a name="line-152"></a><span class="cm">/**</span>
+<a name="line-153"></a><span class="cm"> * Destructor</span>
+<a name="line-154"></a><span class="cm"> */</span>
+<a name="line-155"></a><span class="n">RGTagModel</span><span class="o">::~</span><span class="n">RGTagModel</span><span class="p">()</span>
+<a name="line-156"></a><span class="p">{</span>
+<a name="line-157"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">;</span>
+<a name="line-158"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
+<a name="line-159"></a><span class="p">}</span>
+<a name="line-160"></a>
+<a name="line-161"></a><span class="cm">/**</span>
+<a name="line-162"></a><span class="cm"> * Returns the branch found at index</span>
+<a name="line-163"></a><span class="cm"> * @param index Current model index.</span>
+<a name="line-164"></a><span class="cm"> * @return The branch for the current index.</span>
+<a name="line-165"></a><span class="cm"> */</span>
+<a name="line-166"></a><span class="n">TreeBranch</span><span class="o">*</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">branchFromIndex</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">index</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-167"></a><span class="p">{</span>
+<a name="line-168"></a> <span class="k">return</span> <span class="p">(</span><span class="n">index</span><span class="p">.</span><span class="n">isValid</span><span class="p">()</span> <span class="o">?</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">TreeBranch</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">index</span><span class="p">.</span><span class="n">internalPointer</span><span class="p">())</span> <span class="o">:</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">);</span>
+<a name="line-169"></a><span class="p">}</span>
+<a name="line-170"></a>
+<a name="line-171"></a><span class="kt">void</span> <span class="n">checkTree</span><span class="p">(</span><span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">checkBranch</span><span class="p">,</span> <span class="kt">int</span> <span class="n">level</span><span class="p">)</span>
+<a name="line-172"></a><span class="p">{</span>
+<a name="line-173"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">checkBranch</span><span class="o">-&gt;</span><span class="n">sourceIndex</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
+<a name="line-174"></a> <span class="p">{</span>
+<a name="line-175"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-176"></a> <span class="p">}</span>
+<a name="line-177"></a>
+<a name="line-178"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">j</span> <span class="o">&lt;</span> <span class="n">checkBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span>
+<a name="line-179"></a> <span class="p">{</span>
+<a name="line-180"></a> <span class="n">checkTree</span><span class="p">(</span><span class="n">checkBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">[</span><span class="n">j</span><span class="p">],</span> <span class="n">level</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span>
+<a name="line-181"></a> <span class="p">}</span>
+<a name="line-182"></a>
+<a name="line-183"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">j</span> <span class="o">&lt;</span> <span class="n">checkBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span>
+<a name="line-184"></a> <span class="p">{</span>
+<a name="line-185"></a> <span class="n">checkTree</span><span class="p">(</span><span class="n">checkBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">j</span><span class="p">],</span> <span class="n">level</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span>
+<a name="line-186"></a> <span class="p">}</span>
+<a name="line-187"></a><span class="p">}</span>
<a name="line-188"></a>
-<a name="line-189"></a> <span class="k">return</span> <span class="mi">4</span><span class="p">;</span>
-<a name="line-190"></a> <span class="p">}</span>
-<a name="line-191"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">hasFixType</span><span class="p">())</span>
-<a name="line-192"></a> <span class="p">{</span>
-<a name="line-193"></a> <span class="k">if</span> <span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">getFixType</span><span class="p">()</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">)</span>
-<a name="line-194"></a> <span class="p">{</span>
-<a name="line-195"></a> <span class="k">return</span> <span class="mi">4</span><span class="p">;</span>
-<a name="line-196"></a> <span class="p">}</span>
-<a name="line-197"></a> <span class="p">}</span>
-<a name="line-198"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">())</span>
-<a name="line-199"></a> <span class="p">{</span>
-<a name="line-200"></a> <span class="k">if</span> <span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">getNSatellites</span><span class="p">()</span> <span class="o">&lt;</span> <span class="mi">4</span><span class="p">)</span>
-<a name="line-201"></a> <span class="p">{</span>
-<a name="line-202"></a> <span class="k">return</span> <span class="mi">4</span><span class="p">;</span>
-<a name="line-203"></a> <span class="p">}</span>
-<a name="line-204"></a> <span class="p">}</span>
+<a name="line-189"></a><span class="cm">/**</span>
+<a name="line-190"></a><span class="cm"> * Translates the model index from host&#39;s tag model to this model.</span>
+<a name="line-191"></a><span class="cm"> * @return The index of current old tag.</span>
+<a name="line-192"></a><span class="cm"> */</span>
+<a name="line-193"></a><span class="n">QModelIndex</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">fromSourceIndex</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">externalTagModelIndex</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-194"></a><span class="p">{</span>
+<a name="line-195"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">externalTagModelIndex</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
+<a name="line-196"></a> <span class="p">{</span>
+<a name="line-197"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-198"></a> <span class="p">}</span>
+<a name="line-199"></a>
+<a name="line-200"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">externalTagModelIndex</span><span class="p">.</span><span class="n">model</span><span class="p">()</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">);</span>
+<a name="line-201"></a>
+<a name="line-202"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QModelIndex</span><span class="o">&gt;</span> <span class="n">parents</span><span class="p">;</span>
+<a name="line-203"></a> <span class="n">QModelIndex</span> <span class="n">myIndex</span> <span class="o">=</span> <span class="n">externalTagModelIndex</span><span class="p">;</span>
+<a name="line-204"></a> <span class="n">parents</span><span class="o">&lt;&lt;</span><span class="n">myIndex</span><span class="p">;</span>
<a name="line-205"></a>
-<a name="line-206"></a> <span class="c1">// no warning level</span>
-<a name="line-207"></a>
-<a name="line-208"></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
-<a name="line-209"></a><span class="p">}</span>
-<a name="line-210"></a>
-<a name="line-211"></a><span class="kt">bool</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">loadImageData</span><span class="p">()</span>
-<a name="line-212"></a><span class="p">{</span>
-<a name="line-213"></a> <span class="n">QScopedPointer</span><span class="o">&lt;</span><span class="n">DMetadata</span><span class="o">&gt;</span> <span class="n">meta</span><span class="p">(</span><span class="n">getMetadataForFile</span><span class="p">());</span>
+<a name="line-206"></a> <span class="k">while</span> <span class="p">(</span><span class="n">myIndex</span><span class="p">.</span><span class="n">parent</span><span class="p">().</span><span class="n">isValid</span><span class="p">())</span>
+<a name="line-207"></a> <span class="p">{</span>
+<a name="line-208"></a> <span class="n">myIndex</span> <span class="o">=</span> <span class="n">myIndex</span><span class="p">.</span><span class="n">parent</span><span class="p">();</span>
+<a name="line-209"></a> <span class="n">parents</span><span class="p">.</span><span class="n">prepend</span><span class="p">(</span><span class="n">myIndex</span><span class="p">);</span>
+<a name="line-210"></a> <span class="p">}</span>
+<a name="line-211"></a>
+<a name="line-212"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="n">subModelBranch</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">;</span>
+<a name="line-213"></a> <span class="kt">int</span> <span class="n">level</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-214"></a>
-<a name="line-215"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">m_dateTime</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
+<a name="line-215"></a> <span class="k">while</span> <span class="p">(</span><span class="n">level</span> <span class="o">&lt;=</span> <span class="n">parents</span><span class="p">.</span><span class="n">count</span><span class="p">())</span>
<a name="line-216"></a> <span class="p">{</span>
-<a name="line-217"></a> <span class="n">m_dateTime</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">getItemDateTime</span><span class="p">();</span>
-<a name="line-218"></a> <span class="p">}</span>
-<a name="line-219"></a>
-<a name="line-220"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_dateTime</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
-<a name="line-221"></a> <span class="p">{</span>
-<a name="line-222"></a> <span class="c1">// Get date from filesystem.</span>
-<a name="line-223"></a>
-<a name="line-224"></a> <span class="n">QFileInfo</span> <span class="n">info</span><span class="p">(</span><span class="n">m_url</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">());</span>
-<a name="line-225"></a>
-<a name="line-226"></a><span class="cp">#if (QT_VERSION &gt;= QT_VERSION_CHECK(5, 10, 0))</span>
-<a name="line-227"></a>
-<a name="line-228"></a> <span class="n">QDateTime</span> <span class="n">ctime</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">birthTime</span><span class="p">();</span>
-<a name="line-229"></a>
-<a name="line-230"></a><span class="cp">#else</span>
-<a name="line-231"></a>
-<a name="line-232"></a> <span class="n">QDateTime</span> <span class="n">ctime</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">created</span><span class="p">();</span>
-<a name="line-233"></a>
-<a name="line-234"></a><span class="cp">#endif</span>
+<a name="line-217"></a> <span class="k">if</span> <span class="p">(</span><span class="n">subModelBranch</span><span class="o">-&gt;</span><span class="n">sourceIndex</span> <span class="o">==</span> <span class="n">externalTagModelIndex</span><span class="p">)</span>
+<a name="line-218"></a> <span class="p">{</span>
+<a name="line-219"></a> <span class="k">return</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">subModelBranch</span><span class="o">-&gt;</span><span class="n">sourceIndex</span><span class="p">.</span><span class="n">row</span><span class="p">()</span> <span class="o">+</span>
+<a name="line-220"></a> <span class="n">subModelBranch</span><span class="o">-&gt;</span><span class="n">parent</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span>
+<a name="line-221"></a> <span class="n">subModelBranch</span><span class="o">-&gt;</span><span class="n">parent</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span>
+<a name="line-222"></a> <span class="n">subModelBranch</span><span class="o">-&gt;</span><span class="n">sourceIndex</span><span class="p">.</span><span class="n">column</span><span class="p">(),</span> <span class="n">subModelBranch</span><span class="p">);</span>
+<a name="line-223"></a> <span class="p">}</span>
+<a name="line-224"></a>
+<a name="line-225"></a> <span class="kt">int</span> <span class="n">where</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+<a name="line-226"></a>
+<a name="line-227"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">subModelBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-228"></a> <span class="p">{</span>
+<a name="line-229"></a> <span class="k">if</span> <span class="p">(</span><span class="n">subModelBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">sourceIndex</span> <span class="o">==</span> <span class="n">parents</span><span class="p">[</span><span class="n">level</span><span class="p">])</span>
+<a name="line-230"></a> <span class="p">{</span>
+<a name="line-231"></a> <span class="n">where</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
+<a name="line-232"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-233"></a> <span class="p">}</span>
+<a name="line-234"></a> <span class="p">}</span>
<a name="line-235"></a>
-<a name="line-236"></a> <span class="n">QDateTime</span> <span class="n">mtime</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">lastModified</span><span class="p">();</span>
-<a name="line-237"></a>
-<a name="line-238"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ctime</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">mtime</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
-<a name="line-239"></a> <span class="p">{</span>
-<a name="line-240"></a> <span class="n">m_dateTime</span> <span class="o">=</span> <span class="n">qMax</span><span class="p">(</span><span class="n">ctime</span><span class="p">,</span> <span class="n">mtime</span><span class="p">);</span>
-<a name="line-241"></a> <span class="p">}</span>
-<a name="line-242"></a> <span class="k">else</span>
-<a name="line-243"></a> <span class="p">{</span>
-<a name="line-244"></a> <span class="n">m_dateTime</span> <span class="o">=</span> <span class="n">qMin</span><span class="p">(</span><span class="n">ctime</span><span class="p">,</span> <span class="n">mtime</span><span class="p">);</span>
-<a name="line-245"></a> <span class="p">}</span>
-<a name="line-246"></a> <span class="p">}</span>
-<a name="line-247"></a>
-<a name="line-248"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">meta</span><span class="p">)</span>
-<a name="line-249"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-250"></a>
-<a name="line-251"></a> <span class="c1">// The way we read the coordinates here is problematic</span>
-<a name="line-252"></a> <span class="c1">// if the coordinates were in the file initially, but</span>
-<a name="line-253"></a> <span class="c1">// the user deleted them in the database. Then we still load</span>
-<a name="line-254"></a> <span class="c1">// them from the file. On the other hand, we can not clear</span>
-<a name="line-255"></a> <span class="c1">// the coordinates, because then we would loose them if</span>
-<a name="line-256"></a> <span class="c1">// they are only stored in the database.</span>
-<a name="line-257"></a><span class="cm">/*</span>
-<a name="line-258"></a><span class="cm"> m_gpsData.clear();</span>
-<a name="line-259"></a><span class="cm">*/</span>
-<a name="line-260"></a>
-<a name="line-261"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasCoordinates</span><span class="p">())</span>
-<a name="line-262"></a> <span class="p">{</span>
-<a name="line-263"></a> <span class="c1">// could not load the coordinates from the interface,</span>
-<a name="line-264"></a> <span class="c1">// read them directly from the file</span>
-<a name="line-265"></a>
-<a name="line-266"></a> <span class="kt">double</span> <span class="n">lat</span><span class="p">,</span> <span class="n">lng</span><span class="p">;</span>
-<a name="line-267"></a> <span class="kt">bool</span> <span class="n">haveCoordinates</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">getGPSLatitudeNumber</span><span class="p">(</span><span class="o">&amp;</span><span class="n">lat</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">getGPSLongitudeNumber</span><span class="p">(</span><span class="o">&amp;</span><span class="n">lng</span><span class="p">);</span>
-<a name="line-268"></a>
-<a name="line-269"></a> <span class="k">if</span> <span class="p">(</span><span class="n">haveCoordinates</span><span class="p">)</span>
-<a name="line-270"></a> <span class="p">{</span>
-<a name="line-271"></a> <span class="n">GeoCoordinates</span> <span class="n">coordinates</span><span class="p">(</span><span class="n">lat</span><span class="p">,</span> <span class="n">lng</span><span class="p">);</span>
-<a name="line-272"></a> <span class="kt">double</span> <span class="n">alt</span><span class="p">;</span>
-<a name="line-273"></a>
-<a name="line-274"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="o">-&gt;</span><span class="n">getGPSAltitude</span><span class="p">(</span><span class="o">&amp;</span><span class="n">alt</span><span class="p">))</span>
-<a name="line-275"></a> <span class="p">{</span>
-<a name="line-276"></a> <span class="n">coordinates</span><span class="p">.</span><span class="n">setAlt</span><span class="p">(</span><span class="n">alt</span><span class="p">);</span>
-<a name="line-277"></a> <span class="p">}</span>
-<a name="line-278"></a>
-<a name="line-279"></a> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">setCoordinates</span><span class="p">(</span><span class="n">coordinates</span><span class="p">);</span>
-<a name="line-280"></a> <span class="p">}</span>
-<a name="line-281"></a> <span class="p">}</span>
-<a name="line-282"></a>
-<a name="line-283"></a> <span class="cm">/**</span>
-<a name="line-284"></a><span class="cm"> * @todo It seems that exiv2 provides EXIF entries if XMP sidecar entries exist,</span>
-<a name="line-285"></a><span class="cm"> * therefore no need to read XMP as well?</span>
-<a name="line-286"></a><span class="cm"> */</span>
-<a name="line-287"></a>
-<a name="line-288"></a> <span class="c1">// read the remaining GPS information from the file:</span>
-<a name="line-289"></a>
-<a name="line-290"></a> <span class="k">const</span> <span class="n">QByteArray</span> <span class="n">speedRef</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">getExifTagData</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSSpeedRef&quot;</span><span class="p">);</span>
-<a name="line-291"></a> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="o">!</span><span class="n">speedRef</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">();</span>
-<a name="line-292"></a> <span class="kt">long</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">;</span>
-<a name="line-293"></a> <span class="n">success</span> <span class="o">&amp;=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSSpeed&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-294"></a>
-<a name="line-295"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span><span class="p">)</span>
-<a name="line-296"></a> <span class="p">{</span>
-<a name="line-297"></a> <span class="c1">// be relaxed about 0/0</span>
-<a name="line-298"></a>
-<a name="line-299"></a> <span class="k">if</span> <span class="p">((</span><span class="n">num</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">den</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">))</span>
-<a name="line-300"></a> <span class="p">{</span>
-<a name="line-301"></a> <span class="n">den</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">;</span>
-<a name="line-302"></a> <span class="p">}</span>
-<a name="line-303"></a>
-<a name="line-304"></a> <span class="k">const</span> <span class="n">qreal</span> <span class="n">speedInRef</span> <span class="o">=</span> <span class="n">qreal</span><span class="p">(</span><span class="n">num</span><span class="p">)</span><span class="o">/</span><span class="n">qreal</span><span class="p">(</span><span class="n">den</span><span class="p">);</span>
-<a name="line-305"></a> <span class="n">qreal</span> <span class="n">FactorToMetersPerSecond</span><span class="p">;</span>
-<a name="line-306"></a>
-<a name="line-307"></a> <span class="k">if</span> <span class="p">(</span><span class="n">speedRef</span><span class="p">.</span><span class="n">startsWith</span><span class="p">(</span><span class="sc">&#39;K&#39;</span><span class="p">))</span>
-<a name="line-308"></a> <span class="p">{</span>
-<a name="line-309"></a> <span class="c1">// km/h = 1000 * 3600</span>
-<a name="line-310"></a>
-<a name="line-311"></a> <span class="n">FactorToMetersPerSecond</span> <span class="o">=</span> <span class="mf">1.0</span><span class="o">/</span><span class="mf">3.6</span><span class="p">;</span>
-<a name="line-312"></a> <span class="p">}</span>
-<a name="line-313"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">speedRef</span><span class="p">.</span><span class="n">startsWith</span><span class="p">(</span><span class="sc">&#39;M&#39;</span><span class="p">))</span>
-<a name="line-314"></a> <span class="p">{</span>
-<a name="line-315"></a> <span class="c1">// TODO: someone please check that this is the &#39;right&#39; mile</span>
-<a name="line-316"></a> <span class="c1">// miles/hour = 1609.344 meters / hour = 1609.344 meters / 3600 seconds</span>
+<a name="line-236"></a> <span class="k">if</span> <span class="p">(</span><span class="n">where</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-237"></a> <span class="p">{</span>
+<a name="line-238"></a> <span class="n">subModelBranch</span> <span class="o">=</span> <span class="n">subModelBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">[</span><span class="n">where</span><span class="p">];</span>
+<a name="line-239"></a> <span class="p">}</span>
+<a name="line-240"></a> <span class="k">else</span>
+<a name="line-241"></a> <span class="p">{</span>
+<a name="line-242"></a> <span class="k">if</span> <span class="p">(</span><span class="n">level</span><span class="o">&gt;=</span><span class="n">parents</span><span class="p">.</span><span class="n">count</span><span class="p">())</span>
+<a name="line-243"></a> <span class="p">{</span>
+<a name="line-244"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-245"></a> <span class="p">}</span>
+<a name="line-246"></a>
+<a name="line-247"></a> <span class="c1">// TODO: check when rows are different</span>
+<a name="line-248"></a>
+<a name="line-249"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">newTreeBranch</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TreeBranch</span><span class="p">();</span>
+<a name="line-250"></a> <span class="n">newTreeBranch</span><span class="o">-&gt;</span><span class="n">sourceIndex</span> <span class="o">=</span> <span class="n">parents</span><span class="p">[</span><span class="n">level</span><span class="p">];</span>
+<a name="line-251"></a> <span class="n">newTreeBranch</span><span class="o">-&gt;</span><span class="n">data</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">(</span><span class="n">externalTagModelIndex</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">();</span>
+<a name="line-252"></a> <span class="n">newTreeBranch</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">=</span> <span class="n">subModelBranch</span><span class="p">;</span>
+<a name="line-253"></a> <span class="n">newTreeBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">=</span> <span class="n">TypeChild</span><span class="p">;</span>
+<a name="line-254"></a>
+<a name="line-255"></a> <span class="n">subModelBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">newTreeBranch</span><span class="p">);</span>
+<a name="line-256"></a> <span class="n">subModelBranch</span> <span class="o">=</span> <span class="n">newTreeBranch</span><span class="p">;</span>
+<a name="line-257"></a> <span class="p">}</span>
+<a name="line-258"></a>
+<a name="line-259"></a> <span class="n">level</span><span class="o">++</span><span class="p">;</span>
+<a name="line-260"></a> <span class="p">}</span>
+<a name="line-261"></a>
+<a name="line-262"></a> <span class="c1">//no index is found</span>
+<a name="line-263"></a>
+<a name="line-264"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-265"></a><span class="p">}</span>
+<a name="line-266"></a>
+<a name="line-267"></a><span class="cm">/**</span>
+<a name="line-268"></a><span class="cm"> * Translates the model index from this model to host&#39;s tag model.</span>
+<a name="line-269"></a><span class="cm"> * @return The index of a tag in host&#39;s tag model.</span>
+<a name="line-270"></a><span class="cm"> */</span>
+<a name="line-271"></a><span class="n">QModelIndex</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">toSourceIndex</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">tagModelIndex</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-272"></a><span class="p">{</span>
+<a name="line-273"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">tagModelIndex</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
+<a name="line-274"></a> <span class="p">{</span>
+<a name="line-275"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-276"></a> <span class="p">}</span>
+<a name="line-277"></a>
+<a name="line-278"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">tagModelIndex</span><span class="p">.</span><span class="n">model</span><span class="p">()</span> <span class="o">==</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-279"></a><span class="cm">/*</span>
+<a name="line-280"></a><span class="cm"> static_cast&lt;TreeBranch*&gt;(tagModelIndex.internalPointer());</span>
+<a name="line-281"></a><span class="cm">*/</span>
+<a name="line-282"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">treeBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">tagModelIndex</span><span class="p">);</span>
+<a name="line-283"></a>
+<a name="line-284"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">treeBranch</span><span class="p">)</span>
+<a name="line-285"></a> <span class="p">{</span>
+<a name="line-286"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-287"></a> <span class="p">}</span>
+<a name="line-288"></a>
+<a name="line-289"></a> <span class="k">return</span> <span class="n">treeBranch</span><span class="o">-&gt;</span><span class="n">sourceIndex</span><span class="p">;</span>
+<a name="line-290"></a><span class="p">}</span>
+<a name="line-291"></a>
+<a name="line-292"></a><span class="cm">/**</span>
+<a name="line-293"></a><span class="cm"> * Adds a spacer tag.</span>
+<a name="line-294"></a><span class="cm"> * @param parent The index of the parent. If parent == QModelIndex(), then the spacer is added to top-level</span>
+<a name="line-295"></a><span class="cm"> * @param spacerName The name of the spacer. If it&#39;s an address element, the address element name will have the form {addressElement}.For example: {Country}, {City}...</span>
+<a name="line-296"></a><span class="cm"> *</span>
+<a name="line-297"></a><span class="cm"> */</span>
+<a name="line-298"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">addSpacerTag</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">parent</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">spacerName</span><span class="p">)</span>
+<a name="line-299"></a><span class="p">{</span>
+<a name="line-300"></a><span class="cm">/*</span>
+<a name="line-301"></a><span class="cm"> TreeBranch* const parentBranch = parent.isValid() ? static_cast&lt;TreeBranch*&gt;(parent.internalPointer()) : d-&gt;rootTag;</span>
+<a name="line-302"></a><span class="cm">*/</span>
+<a name="line-303"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+<a name="line-304"></a> <span class="kt">bool</span> <span class="n">found</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-305"></a>
+<a name="line-306"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-307"></a> <span class="p">{</span>
+<a name="line-308"></a> <span class="k">for</span> <span class="p">(</span> <span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-309"></a> <span class="p">{</span>
+<a name="line-310"></a> <span class="k">if</span> <span class="p">(</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">data</span> <span class="o">==</span> <span class="n">spacerName</span><span class="p">)</span>
+<a name="line-311"></a> <span class="p">{</span>
+<a name="line-312"></a> <span class="n">found</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-313"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-314"></a> <span class="p">}</span>
+<a name="line-315"></a> <span class="p">}</span>
+<a name="line-316"></a> <span class="p">}</span>
<a name="line-317"></a>
-<a name="line-318"></a> <span class="n">FactorToMetersPerSecond</span> <span class="o">=</span> <span class="mf">1.0</span> <span class="o">/</span> <span class="p">(</span><span class="mf">1609.344</span> <span class="o">/</span> <span class="mf">3600.0</span><span class="p">);</span>
-<a name="line-319"></a> <span class="p">}</span>
-<a name="line-320"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">speedRef</span><span class="p">.</span><span class="n">startsWith</span><span class="p">(</span><span class="sc">&#39;N&#39;</span><span class="p">))</span>
-<a name="line-321"></a> <span class="p">{</span>
-<a name="line-322"></a> <span class="c1">// speed is in knots.</span>
-<a name="line-323"></a> <span class="c1">// knot = one nautical mile / hour = 1852 meters / hour = 1852 meters / 3600 seconds</span>
+<a name="line-318"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">found</span><span class="p">)</span>
+<a name="line-319"></a> <span class="p">{</span>
+<a name="line-320"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">newSpacer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TreeBranch</span><span class="p">();</span>
+<a name="line-321"></a> <span class="n">newSpacer</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parentBranch</span><span class="p">;</span>
+<a name="line-322"></a> <span class="n">newSpacer</span><span class="o">-&gt;</span><span class="n">data</span> <span class="o">=</span> <span class="n">spacerName</span><span class="p">;</span>
+<a name="line-323"></a> <span class="n">newSpacer</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">=</span> <span class="n">TypeSpacer</span><span class="p">;</span>
<a name="line-324"></a>
-<a name="line-325"></a> <span class="n">FactorToMetersPerSecond</span> <span class="o">=</span> <span class="mf">1.0</span> <span class="o">/</span> <span class="p">(</span><span class="mf">1852.0</span> <span class="o">/</span> <span class="mf">3600.0</span><span class="p">);</span>
-<a name="line-326"></a> <span class="p">}</span>
-<a name="line-327"></a> <span class="k">else</span>
-<a name="line-328"></a> <span class="p">{</span>
-<a name="line-329"></a> <span class="n">success</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-330"></a> <span class="p">}</span>
-<a name="line-331"></a>
-<a name="line-332"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span><span class="p">)</span>
-<a name="line-333"></a> <span class="p">{</span>
-<a name="line-334"></a> <span class="k">const</span> <span class="n">qreal</span> <span class="n">speedInMetersPerSecond</span> <span class="o">=</span> <span class="n">speedInRef</span> <span class="o">*</span> <span class="n">FactorToMetersPerSecond</span><span class="p">;</span>
-<a name="line-335"></a> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">setSpeed</span><span class="p">(</span><span class="n">speedInMetersPerSecond</span><span class="p">);</span>
-<a name="line-336"></a> <span class="p">}</span>
-<a name="line-337"></a> <span class="p">}</span>
-<a name="line-338"></a>
-<a name="line-339"></a> <span class="c1">// number of satellites</span>
-<a name="line-340"></a>
-<a name="line-341"></a> <span class="k">const</span> <span class="n">QString</span> <span class="n">gpsSatellitesString</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">getExifTagString</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSSatellites&quot;</span><span class="p">);</span>
-<a name="line-342"></a> <span class="kt">bool</span> <span class="n">satellitesOkay</span> <span class="o">=</span> <span class="o">!</span><span class="n">gpsSatellitesString</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">();</span>
-<a name="line-343"></a>
-<a name="line-344"></a> <span class="k">if</span> <span class="p">(</span><span class="n">satellitesOkay</span><span class="p">)</span>
-<a name="line-345"></a> <span class="p">{</span>
-<a name="line-346"></a> <span class="cm">/**</span>
-<a name="line-347"></a><span class="cm"> * @todo Here we only accept a single integer denoting the number of satellites used</span>
-<a name="line-348"></a><span class="cm"> * but not detailed information about all satellites.</span>
-<a name="line-349"></a><span class="cm"> */</span>
-<a name="line-350"></a>
-<a name="line-351"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">nSatellites</span> <span class="o">=</span> <span class="n">gpsSatellitesString</span><span class="p">.</span><span class="n">toInt</span><span class="p">(</span><span class="o">&amp;</span><span class="n">satellitesOkay</span><span class="p">);</span>
-<a name="line-352"></a>
-<a name="line-353"></a> <span class="k">if</span> <span class="p">(</span><span class="n">satellitesOkay</span><span class="p">)</span>
-<a name="line-354"></a> <span class="p">{</span>
-<a name="line-355"></a> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">setNSatellites</span><span class="p">(</span><span class="n">nSatellites</span><span class="p">);</span>
-<a name="line-356"></a> <span class="p">}</span>
-<a name="line-357"></a> <span class="p">}</span>
-<a name="line-358"></a>
-<a name="line-359"></a> <span class="c1">// fix type / measure mode</span>
-<a name="line-360"></a>
-<a name="line-361"></a> <span class="k">const</span> <span class="n">QByteArray</span> <span class="n">gpsMeasureModeByteArray</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">getExifTagData</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSMeasureMode&quot;</span><span class="p">);</span>
-<a name="line-362"></a> <span class="kt">bool</span> <span class="n">measureModeOkay</span> <span class="o">=</span> <span class="o">!</span><span class="n">gpsMeasureModeByteArray</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">();</span>
-<a name="line-363"></a>
-<a name="line-364"></a> <span class="k">if</span> <span class="p">(</span><span class="n">measureModeOkay</span><span class="p">)</span>
-<a name="line-365"></a> <span class="p">{</span>
-<a name="line-366"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">measureMode</span> <span class="o">=</span> <span class="n">gpsMeasureModeByteArray</span><span class="p">.</span><span class="n">toInt</span><span class="p">(</span><span class="o">&amp;</span><span class="n">measureModeOkay</span><span class="p">);</span>
-<a name="line-367"></a>
-<a name="line-368"></a> <span class="k">if</span> <span class="p">(</span><span class="n">measureModeOkay</span><span class="p">)</span>
-<a name="line-369"></a> <span class="p">{</span>
-<a name="line-370"></a> <span class="k">if</span> <span class="p">((</span><span class="n">measureMode</span> <span class="o">==</span> <span class="mi">2</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">measureMode</span> <span class="o">==</span> <span class="mi">3</span><span class="p">))</span>
-<a name="line-371"></a> <span class="p">{</span>
-<a name="line-372"></a> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">setFixType</span><span class="p">(</span><span class="n">measureMode</span><span class="p">);</span>
-<a name="line-373"></a> <span class="p">}</span>
-<a name="line-374"></a> <span class="p">}</span>
-<a name="line-375"></a> <span class="p">}</span>
-<a name="line-376"></a>
-<a name="line-377"></a> <span class="c1">// read the DOP value:</span>
-<a name="line-378"></a>
-<a name="line-379"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">getExifTagRational</span><span class="p">(</span><span class="s">&quot;Exif.GPSInfo.GPSDOP&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">den</span><span class="p">);</span>
-<a name="line-380"></a>
-<a name="line-381"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span><span class="p">)</span>
-<a name="line-382"></a> <span class="p">{</span>
-<a name="line-383"></a> <span class="c1">// be relaxed about 0/0</span>
+<a name="line-325"></a> <span class="n">beginInsertRows</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">());</span>
+<a name="line-326"></a> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">newSpacer</span><span class="p">);</span>
+<a name="line-327"></a> <span class="n">endInsertRows</span><span class="p">();</span>
+<a name="line-328"></a> <span class="p">}</span>
+<a name="line-329"></a><span class="p">}</span>
+<a name="line-330"></a>
+<a name="line-331"></a><span class="cm">/**</span>
+<a name="line-332"></a><span class="cm"> * Adds a tag containing data returned from backends.</span>
+<a name="line-333"></a><span class="cm"> * @param parent The index of the parent.</span>
+<a name="line-334"></a><span class="cm"> * @param newTagName The name of the new tag.</span>
+<a name="line-335"></a><span class="cm"> */</span>
+<a name="line-336"></a><span class="n">QPersistentModelIndex</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">addNewTag</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">parent</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">newTagName</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">newElement</span><span class="p">)</span>
+<a name="line-337"></a><span class="p">{</span>
+<a name="line-338"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+<a name="line-339"></a><span class="cm">/*</span>
+<a name="line-340"></a><span class="cm"> parent.isValid() ? static_cast&lt;TreeBranch*&gt;(parent.internalPointer()) : d-&gt;rootTag;</span>
+<a name="line-341"></a><span class="cm">*/</span>
+<a name="line-342"></a> <span class="kt">bool</span> <span class="n">found</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-343"></a> <span class="n">QPersistentModelIndex</span> <span class="n">retIndex</span><span class="p">;</span>
+<a name="line-344"></a>
+<a name="line-345"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-346"></a> <span class="p">{</span>
+<a name="line-347"></a> <span class="k">for</span> <span class="p">(</span> <span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-348"></a> <span class="p">{</span>
+<a name="line-349"></a> <span class="k">if</span> <span class="p">(</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">data</span> <span class="o">==</span> <span class="n">newTagName</span><span class="p">)</span>
+<a name="line-350"></a> <span class="p">{</span>
+<a name="line-351"></a> <span class="n">found</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-352"></a> <span class="n">retIndex</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">i</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
+<a name="line-353"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-354"></a> <span class="p">}</span>
+<a name="line-355"></a> <span class="p">}</span>
+<a name="line-356"></a> <span class="p">}</span>
+<a name="line-357"></a>
+<a name="line-358"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">found</span><span class="p">)</span>
+<a name="line-359"></a> <span class="p">{</span>
+<a name="line-360"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">newTagChild</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TreeBranch</span><span class="p">();</span>
+<a name="line-361"></a> <span class="n">newTagChild</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parentBranch</span><span class="p">;</span>
+<a name="line-362"></a> <span class="n">newTagChild</span><span class="o">-&gt;</span><span class="n">data</span> <span class="o">=</span> <span class="n">newTagName</span><span class="p">;</span>
+<a name="line-363"></a> <span class="n">newTagChild</span><span class="o">-&gt;</span><span class="n">help</span> <span class="o">=</span> <span class="n">newElement</span><span class="p">;</span>
+<a name="line-364"></a> <span class="n">newTagChild</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">=</span> <span class="n">TypeNewChild</span><span class="p">;</span>
+<a name="line-365"></a>
+<a name="line-366"></a> <span class="n">beginInsertRows</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span><span class="o">+</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span>
+<a name="line-367"></a> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span><span class="o">+</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">());</span>
+<a name="line-368"></a> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">newTagChild</span><span class="p">);</span>
+<a name="line-369"></a> <span class="n">endInsertRows</span><span class="p">();</span>
+<a name="line-370"></a>
+<a name="line-371"></a> <span class="n">retIndex</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span>
+<a name="line-372"></a> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">last</span><span class="p">());</span>
+<a name="line-373"></a> <span class="p">}</span>
+<a name="line-374"></a>
+<a name="line-375"></a> <span class="k">return</span> <span class="n">retIndex</span><span class="p">;</span>
+<a name="line-376"></a><span class="p">}</span>
+<a name="line-377"></a>
+<a name="line-378"></a><span class="cm">/**</span>
+<a name="line-379"></a><span class="cm"> * Gets the address of a tag.</span>
+<a name="line-380"></a><span class="cm"> */</span>
+<a name="line-381"></a><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">getTagAddress</span><span class="p">()</span>
+<a name="line-382"></a><span class="p">{</span>
+<a name="line-383"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="n">tagAddress</span><span class="p">;</span>
<a name="line-384"></a>
-<a name="line-385"></a> <span class="k">if</span> <span class="p">((</span><span class="n">num</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">den</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">))</span>
-<a name="line-386"></a> <span class="p">{</span>
-<a name="line-387"></a> <span class="n">den</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">;</span>
-<a name="line-388"></a> <span class="p">}</span>
-<a name="line-389"></a>
-<a name="line-390"></a> <span class="k">const</span> <span class="n">qreal</span> <span class="n">dop</span> <span class="o">=</span> <span class="n">qreal</span><span class="p">(</span><span class="n">num</span><span class="p">)</span><span class="o">/</span><span class="n">qreal</span><span class="p">(</span><span class="n">den</span><span class="p">);</span>
-<a name="line-391"></a>
-<a name="line-392"></a> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">setDop</span><span class="p">(</span><span class="n">dop</span><span class="p">);</span>
-<a name="line-393"></a> <span class="p">}</span>
-<a name="line-394"></a>
-<a name="line-395"></a> <span class="c1">// mark us as not-dirty, because the data was just loaded:</span>
-<a name="line-396"></a>
-<a name="line-397"></a> <span class="n">m_dirty</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-398"></a> <span class="n">m_savedState</span> <span class="o">=</span> <span class="n">m_gpsData</span><span class="p">;</span>
-<a name="line-399"></a>
-<a name="line-400"></a> <span class="n">emitDataChanged</span><span class="p">();</span>
-<a name="line-401"></a>
-<a name="line-402"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-403"></a><span class="p">}</span>
-<a name="line-404"></a>
-<a name="line-405"></a><span class="n">QVariant</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">data</span><span class="p">(</span><span class="k">const</span> <span class="kt">int</span> <span class="n">column</span><span class="p">,</span> <span class="k">const</span> <span class="kt">int</span> <span class="n">role</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-406"></a><span class="p">{</span>
-<a name="line-407"></a> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnFilename</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
-<a name="line-408"></a> <span class="p">{</span>
-<a name="line-409"></a> <span class="k">return</span> <span class="n">m_url</span><span class="p">.</span><span class="n">fileName</span><span class="p">();</span>
-<a name="line-410"></a> <span class="p">}</span>
-<a name="line-411"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnDateTime</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
-<a name="line-412"></a> <span class="p">{</span>
-<a name="line-413"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_dateTime</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
-<a name="line-414"></a> <span class="p">{</span>
-<a name="line-415"></a> <span class="k">return</span> <span class="n">QLocale</span><span class="p">().</span><span class="n">toString</span><span class="p">(</span><span class="n">m_dateTime</span><span class="p">,</span> <span class="n">QLocale</span><span class="o">::</span><span class="n">ShortFormat</span><span class="p">);</span>
-<a name="line-416"></a> <span class="p">}</span>
-<a name="line-417"></a>
-<a name="line-418"></a> <span class="k">return</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Not available&quot;</span><span class="p">);</span>
-<a name="line-419"></a> <span class="p">}</span>
-<a name="line-420"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">RoleCoordinates</span><span class="p">)</span>
-<a name="line-421"></a> <span class="p">{</span>
-<a name="line-422"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="o">::</span><span class="n">fromValue</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">());</span>
-<a name="line-423"></a> <span class="p">}</span>
-<a name="line-424"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnLatitude</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
-<a name="line-425"></a> <span class="p">{</span>
-<a name="line-426"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">hasLatitude</span><span class="p">())</span>
-<a name="line-427"></a> <span class="p">{</span>
-<a name="line-428"></a> <span class="k">return</span> <span class="n">QString</span><span class="p">();</span>
-<a name="line-429"></a> <span class="p">}</span>
+<a name="line-385"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-386"></a> <span class="p">{</span>
+<a name="line-387"></a> <span class="n">TagData</span> <span class="n">tagData</span><span class="p">;</span>
+<a name="line-388"></a> <span class="n">tagData</span><span class="p">.</span><span class="n">tagName</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagList</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+<a name="line-389"></a> <span class="n">tagData</span><span class="p">.</span><span class="n">tagType</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagTypeList</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+<a name="line-390"></a> <span class="n">tagAddress</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">tagData</span><span class="p">);</span>
+<a name="line-391"></a> <span class="p">}</span>
+<a name="line-392"></a>
+<a name="line-393"></a> <span class="k">return</span> <span class="n">tagAddress</span><span class="p">;</span>
+<a name="line-394"></a><span class="p">}</span>
+<a name="line-395"></a>
+<a name="line-396"></a><span class="cm">/**</span>
+<a name="line-397"></a><span class="cm"> * The function starts to scan the tree starting with currentBranch. When it finds a spacer containing an address element, it</span>
+<a name="line-398"></a><span class="cm"> * looks to see if the address element is found in addressElements list. If it&#39;s found, a new tag is added.</span>
+<a name="line-399"></a><span class="cm"> * @param currentBranch The branch from where the scan starts.</span>
+<a name="line-400"></a><span class="cm"> * @param currentRow The row of the current branch.</span>
+<a name="line-401"></a><span class="cm"> * @param addressElements A list containing address elements. Example: {Country}, {City}...</span>
+<a name="line-402"></a><span class="cm"> * @param elementsData A list containing the name of each address element found in elements. Example: France, Paris...</span>
+<a name="line-403"></a><span class="cm"> */</span>
+<a name="line-404"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">addDataInTree</span><span class="p">(</span><span class="n">TreeBranch</span><span class="o">*</span> <span class="n">currentBranch</span><span class="p">,</span>
+<a name="line-405"></a> <span class="kt">int</span> <span class="n">currentRow</span><span class="p">,</span>
+<a name="line-406"></a> <span class="k">const</span> <span class="n">QStringList</span><span class="o">&amp;</span> <span class="n">addressElements</span><span class="p">,</span>
+<a name="line-407"></a> <span class="k">const</span> <span class="n">QStringList</span><span class="o">&amp;</span> <span class="n">elementsData</span><span class="p">)</span>
+<a name="line-408"></a><span class="p">{</span>
+<a name="line-409"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-410"></a> <span class="p">{</span>
+<a name="line-411"></a> <span class="kt">bool</span> <span class="n">newDataAdded</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-412"></a>
+<a name="line-413"></a> <span class="c1">//this spacer is not an address element</span>
+<a name="line-414"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{&quot;</span><span class="p">))</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-415"></a> <span class="p">{</span>
+<a name="line-416"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">);</span>
+<a name="line-417"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagTypeList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">TypeSpacer</span><span class="p">);</span>
+<a name="line-418"></a> <span class="n">addDataInTree</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">i</span><span class="p">,</span> <span class="n">addressElements</span><span class="p">,</span> <span class="n">elementsData</span><span class="p">);</span>
+<a name="line-419"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagList</span><span class="p">.</span><span class="n">removeLast</span><span class="p">();</span>
+<a name="line-420"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagTypeList</span><span class="p">.</span><span class="n">removeLast</span><span class="p">();</span>
+<a name="line-421"></a> <span class="p">}</span>
+<a name="line-422"></a> <span class="k">else</span>
+<a name="line-423"></a> <span class="p">{</span>
+<a name="line-424"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">j</span> <span class="o">&lt;</span> <span class="n">addressElements</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span>
+<a name="line-425"></a> <span class="p">{</span>
+<a name="line-426"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">data</span> <span class="o">==</span> <span class="n">addressElements</span><span class="p">[</span><span class="n">j</span><span class="p">])</span>
+<a name="line-427"></a> <span class="p">{</span>
+<a name="line-428"></a> <span class="n">newDataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-429"></a> <span class="n">QModelIndex</span> <span class="n">currentIndex</span><span class="p">;</span>
<a name="line-430"></a>
-<a name="line-431"></a> <span class="k">return</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">lat</span><span class="p">(),</span> <span class="mi">7</span><span class="p">);</span>
-<a name="line-432"></a> <span class="p">}</span>
-<a name="line-433"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnLongitude</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
-<a name="line-434"></a> <span class="p">{</span>
-<a name="line-435"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">hasLongitude</span><span class="p">())</span>
-<a name="line-436"></a> <span class="p">{</span>
-<a name="line-437"></a> <span class="k">return</span> <span class="n">QString</span><span class="p">();</span>
-<a name="line-438"></a> <span class="p">}</span>
+<a name="line-431"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">)</span>
+<a name="line-432"></a> <span class="p">{</span>
+<a name="line-433"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-434"></a> <span class="p">}</span>
+<a name="line-435"></a> <span class="k">else</span>
+<a name="line-436"></a> <span class="p">{</span>
+<a name="line-437"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">currentRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">currentBranch</span><span class="p">);</span>
+<a name="line-438"></a> <span class="p">}</span>
<a name="line-439"></a>
-<a name="line-440"></a> <span class="k">return</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">lon</span><span class="p">(),</span> <span class="mi">7</span><span class="p">);</span>
-<a name="line-441"></a> <span class="p">}</span>
-<a name="line-442"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnAltitude</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
-<a name="line-443"></a> <span class="p">{</span>
-<a name="line-444"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">hasAltitude</span><span class="p">())</span>
-<a name="line-445"></a> <span class="p">{</span>
-<a name="line-446"></a> <span class="k">return</span> <span class="n">QString</span><span class="p">();</span>
-<a name="line-447"></a> <span class="p">}</span>
-<a name="line-448"></a>
-<a name="line-449"></a> <span class="k">return</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">alt</span><span class="p">(),</span> <span class="mi">7</span><span class="p">);</span>
-<a name="line-450"></a> <span class="p">}</span>
-<a name="line-451"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnAccuracy</span><span class="p">)</span>
-<a name="line-452"></a> <span class="p">{</span>
-<a name="line-453"></a> <span class="k">if</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">)</span>
-<a name="line-454"></a> <span class="p">{</span>
-<a name="line-455"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasDop</span><span class="p">())</span>
-<a name="line-456"></a> <span class="p">{</span>
-<a name="line-457"></a> <span class="k">return</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;DOP: %1&quot;</span><span class="p">,</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">getDop</span><span class="p">());</span>
-<a name="line-458"></a> <span class="p">}</span>
-<a name="line-459"></a>
-<a name="line-460"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasFixType</span><span class="p">())</span>
-<a name="line-461"></a> <span class="p">{</span>
-<a name="line-462"></a> <span class="k">return</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Fix: %1d&quot;</span><span class="p">,</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">getFixType</span><span class="p">());</span>
-<a name="line-463"></a> <span class="p">}</span>
-<a name="line-464"></a>
-<a name="line-465"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">())</span>
-<a name="line-466"></a> <span class="p">{</span>
-<a name="line-467"></a> <span class="k">return</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;#Sat: %1&quot;</span><span class="p">,</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">getNSatellites</span><span class="p">());</span>
-<a name="line-468"></a> <span class="p">}</span>
-<a name="line-469"></a> <span class="p">}</span>
-<a name="line-470"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">BackgroundRole</span><span class="p">)</span>
-<a name="line-471"></a> <span class="p">{</span>
-<a name="line-472"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">warningLevel</span> <span class="o">=</span> <span class="n">getWarningLevelFromGPSDataContainer</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">);</span>
-<a name="line-473"></a>
-<a name="line-474"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">warningLevel</span><span class="p">)</span>
-<a name="line-475"></a> <span class="p">{</span>
-<a name="line-476"></a> <span class="k">case</span> <span class="mi">1</span><span class="o">:</span>
-<a name="line-477"></a> <span class="k">return</span> <span class="n">QBrush</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">green</span><span class="p">);</span>
-<a name="line-478"></a>
-<a name="line-479"></a> <span class="k">case</span> <span class="mi">2</span><span class="o">:</span>
-<a name="line-480"></a> <span class="k">return</span> <span class="n">QBrush</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">yellow</span><span class="p">);</span>
-<a name="line-481"></a>
-<a name="line-482"></a> <span class="k">case</span> <span class="mi">3</span><span class="o">:</span>
-<a name="line-483"></a> <span class="c1">// orange</span>
-<a name="line-484"></a> <span class="k">return</span> <span class="n">QBrush</span><span class="p">(</span><span class="n">QColor</span><span class="p">(</span><span class="mh">0xff</span><span class="p">,</span> <span class="mh">0x80</span><span class="p">,</span> <span class="mh">0x00</span><span class="p">));</span>
-<a name="line-485"></a>
-<a name="line-486"></a> <span class="k">case</span> <span class="mi">4</span><span class="o">:</span>
-<a name="line-487"></a> <span class="k">return</span> <span class="n">QBrush</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">red</span><span class="p">);</span>
-<a name="line-488"></a>
-<a name="line-489"></a> <span class="k">default</span><span class="o">:</span>
-<a name="line-490"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-491"></a> <span class="p">}</span>
-<a name="line-492"></a> <span class="p">}</span>
-<a name="line-493"></a> <span class="p">}</span>
-<a name="line-494"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnDOP</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
-<a name="line-495"></a> <span class="p">{</span>
-<a name="line-496"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasDop</span><span class="p">())</span>
-<a name="line-497"></a> <span class="p">{</span>
-<a name="line-498"></a> <span class="k">return</span> <span class="n">QString</span><span class="p">();</span>
-<a name="line-499"></a> <span class="p">}</span>
-<a name="line-500"></a>
-<a name="line-501"></a> <span class="k">return</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getDop</span><span class="p">());</span>
-<a name="line-502"></a> <span class="p">}</span>
-<a name="line-503"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnFixType</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
-<a name="line-504"></a> <span class="p">{</span>
-<a name="line-505"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasFixType</span><span class="p">())</span>
-<a name="line-506"></a> <span class="p">{</span>
-<a name="line-507"></a> <span class="k">return</span> <span class="n">QString</span><span class="p">();</span>
-<a name="line-508"></a> <span class="p">}</span>
-<a name="line-509"></a>
-<a name="line-510"></a> <span class="k">return</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;%1d&quot;</span><span class="p">,</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">getFixType</span><span class="p">());</span>
-<a name="line-511"></a> <span class="p">}</span>
-<a name="line-512"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnNSatellites</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
-<a name="line-513"></a> <span class="p">{</span>
-<a name="line-514"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">())</span>
-<a name="line-515"></a> <span class="p">{</span>
-<a name="line-516"></a> <span class="k">return</span> <span class="n">QString</span><span class="p">();</span>
-<a name="line-517"></a> <span class="p">}</span>
+<a name="line-440"></a> <span class="c1">// checks if adds the new tag as a sibling to a spacer, or as a child of a new tag</span>
+<a name="line-441"></a>
+<a name="line-442"></a> <span class="n">QPersistentModelIndex</span> <span class="n">auxIndex</span><span class="p">;</span>
+<a name="line-443"></a>
+<a name="line-444"></a> <span class="k">if</span> <span class="p">((</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">!=</span> <span class="n">TypeSpacer</span> <span class="o">||</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{&quot;</span><span class="p">))</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="o">||</span>
+<a name="line-445"></a> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">auxIndexList</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">()))</span>
+<a name="line-446"></a> <span class="p">{</span>
+<a name="line-447"></a> <span class="n">auxIndex</span> <span class="o">=</span> <span class="n">addNewTag</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">,</span> <span class="n">elementsData</span><span class="p">[</span><span class="n">j</span><span class="p">],</span> <span class="n">addressElements</span><span class="p">[</span><span class="n">j</span><span class="p">]);</span>
+<a name="line-448"></a> <span class="p">}</span>
+<a name="line-449"></a> <span class="k">else</span>
+<a name="line-450"></a> <span class="p">{</span>
+<a name="line-451"></a> <span class="n">auxIndex</span> <span class="o">=</span> <span class="n">addNewTag</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">auxIndexList</span><span class="p">.</span><span class="n">last</span><span class="p">(),</span> <span class="n">elementsData</span><span class="p">[</span><span class="n">j</span><span class="p">],</span> <span class="n">addressElements</span><span class="p">[</span><span class="n">j</span><span class="p">]);</span>
+<a name="line-452"></a> <span class="p">}</span>
+<a name="line-453"></a>
+<a name="line-454"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">elementsData</span><span class="p">[</span><span class="n">j</span><span class="p">]);</span>
+<a name="line-455"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagTypeList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">TypeNewChild</span><span class="p">);</span>
+<a name="line-456"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxIndexList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">auxIndex</span><span class="p">);</span>
+<a name="line-457"></a>
+<a name="line-458"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="n">newTag</span> <span class="o">=</span> <span class="n">getTagAddress</span><span class="p">();</span>
+<a name="line-459"></a> <span class="n">newTag</span><span class="p">.</span><span class="n">last</span><span class="p">().</span><span class="n">tipName</span> <span class="o">=</span> <span class="n">addressElements</span><span class="p">[</span><span class="n">j</span><span class="p">];</span>
+<a name="line-460"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">newTags</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">newTag</span><span class="p">);</span>
+<a name="line-461"></a> <span class="p">}</span>
+<a name="line-462"></a> <span class="p">}</span>
+<a name="line-463"></a>
+<a name="line-464"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">))</span>
+<a name="line-465"></a> <span class="p">{</span>
+<a name="line-466"></a> <span class="n">addDataInTree</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">i</span><span class="p">,</span> <span class="n">addressElements</span><span class="p">,</span> <span class="n">elementsData</span><span class="p">);</span>
+<a name="line-467"></a> <span class="p">}</span>
+<a name="line-468"></a>
+<a name="line-469"></a> <span class="k">if</span> <span class="p">(</span><span class="n">newDataAdded</span><span class="p">)</span>
+<a name="line-470"></a> <span class="p">{</span>
+<a name="line-471"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagList</span><span class="p">.</span><span class="n">removeLast</span><span class="p">();</span>
+<a name="line-472"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagTypeList</span><span class="p">.</span><span class="n">removeLast</span><span class="p">();</span>
+<a name="line-473"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxIndexList</span><span class="p">.</span><span class="n">removeLast</span><span class="p">();</span>
+<a name="line-474"></a> <span class="p">}</span>
+<a name="line-475"></a> <span class="p">}</span>
+<a name="line-476"></a> <span class="p">}</span>
+<a name="line-477"></a>
+<a name="line-478"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-479"></a> <span class="p">{</span>
+<a name="line-480"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">);</span>
+<a name="line-481"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagTypeList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">TypeNewChild</span><span class="p">);</span>
+<a name="line-482"></a> <span class="n">addDataInTree</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">),</span> <span class="n">i</span><span class="o">+</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span> <span class="n">addressElements</span><span class="p">,</span> <span class="n">elementsData</span><span class="p">);</span>
+<a name="line-483"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagList</span><span class="p">.</span><span class="n">removeLast</span><span class="p">();</span>
+<a name="line-484"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagTypeList</span><span class="p">.</span><span class="n">removeLast</span><span class="p">();</span>
+<a name="line-485"></a> <span class="p">}</span>
+<a name="line-486"></a>
+<a name="line-487"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-488"></a> <span class="p">{</span>
+<a name="line-489"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">);</span>
+<a name="line-490"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagTypeList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">TypeChild</span><span class="p">);</span>
+<a name="line-491"></a> <span class="n">addDataInTree</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">),</span>
+<a name="line-492"></a> <span class="n">i</span> <span class="o">+</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span>
+<a name="line-493"></a> <span class="n">addressElements</span><span class="p">,</span>
+<a name="line-494"></a> <span class="n">elementsData</span><span class="p">);</span>
+<a name="line-495"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagList</span><span class="p">.</span><span class="n">removeLast</span><span class="p">();</span>
+<a name="line-496"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagTypeList</span><span class="p">.</span><span class="n">removeLast</span><span class="p">();</span>
+<a name="line-497"></a> <span class="p">}</span>
+<a name="line-498"></a><span class="p">}</span>
+<a name="line-499"></a>
+<a name="line-500"></a><span class="cm">/**</span>
+<a name="line-501"></a><span class="cm"> * Add new tags to tag tree. The function starts to scan the tree from root level. When it finds a spacer containing an address element</span>
+<a name="line-502"></a><span class="cm"> * , it looks to see if the address element is found in elements list. If it&#39;s found, a new tag is added.</span>
+<a name="line-503"></a><span class="cm"> * @param elements A list containing address elements. Example: {Country}, {City}...</span>
+<a name="line-504"></a><span class="cm"> * @param resultedData A list containing the name of each address element found in elements. Example: France, Paris...</span>
+<a name="line-505"></a><span class="cm"> * @return A list containing new tags</span>
+<a name="line-506"></a><span class="cm"> */</span>
+<a name="line-507"></a><span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">addNewData</span><span class="p">(</span><span class="n">QStringList</span><span class="o">&amp;</span> <span class="n">elements</span><span class="p">,</span> <span class="n">QStringList</span><span class="o">&amp;</span> <span class="n">resultedData</span><span class="p">)</span>
+<a name="line-508"></a><span class="p">{</span>
+<a name="line-509"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">newTags</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
+<a name="line-510"></a>
+<a name="line-511"></a> <span class="c1">//elements contains address elements {Country}, {City}, ...</span>
+<a name="line-512"></a> <span class="c1">//resultedData contains RG data (example Spain,Barcelona)</span>
+<a name="line-513"></a>
+<a name="line-514"></a> <span class="n">addDataInTree</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">elements</span><span class="p">,</span> <span class="n">resultedData</span><span class="p">);</span>
+<a name="line-515"></a>
+<a name="line-516"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">newTags</span><span class="p">;</span>
+<a name="line-517"></a><span class="p">}</span>
<a name="line-518"></a>
-<a name="line-519"></a> <span class="k">return</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getNSatellites</span><span class="p">());</span>
-<a name="line-520"></a> <span class="p">}</span>
-<a name="line-521"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnSpeed</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
-<a name="line-522"></a> <span class="p">{</span>
-<a name="line-523"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasSpeed</span><span class="p">())</span>
-<a name="line-524"></a> <span class="p">{</span>
-<a name="line-525"></a> <span class="k">return</span> <span class="n">QString</span><span class="p">();</span>
-<a name="line-526"></a> <span class="p">}</span>
+<a name="line-519"></a><span class="kt">int</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">columnCount</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">parent</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-520"></a><span class="p">{</span>
+<a name="line-521"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span> <span class="c1">//static_cast&lt;TreeBranch*&gt;(parent.internalPointer());</span>
+<a name="line-522"></a>
+<a name="line-523"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">parentBranch</span><span class="p">)</span>
+<a name="line-524"></a> <span class="p">{</span>
+<a name="line-525"></a> <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<a name="line-526"></a> <span class="p">}</span>
<a name="line-527"></a>
-<a name="line-528"></a> <span class="k">return</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getSpeed</span><span class="p">());</span>
-<a name="line-529"></a> <span class="p">}</span>
-<a name="line-530"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnStatus</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
-<a name="line-531"></a> <span class="p">{</span>
-<a name="line-532"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_dirty</span> <span class="o">||</span> <span class="n">m_tagListDirty</span><span class="p">)</span>
-<a name="line-533"></a> <span class="p">{</span>
-<a name="line-534"></a> <span class="k">return</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Modified&quot;</span><span class="p">);</span>
-<a name="line-535"></a> <span class="p">}</span>
+<a name="line-528"></a> <span class="k">if</span> <span class="p">(</span><span class="n">parentBranch</span> <span class="o">&amp;&amp;</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeSpacer</span><span class="p">)</span>
+<a name="line-529"></a> <span class="p">{</span>
+<a name="line-530"></a> <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<a name="line-531"></a> <span class="p">}</span>
+<a name="line-532"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">parentBranch</span> <span class="o">&amp;&amp;</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">)</span>
+<a name="line-533"></a> <span class="p">{</span>
+<a name="line-534"></a> <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<a name="line-535"></a> <span class="p">}</span>
<a name="line-536"></a>
-<a name="line-537"></a> <span class="k">return</span> <span class="n">QString</span><span class="p">();</span>
-<a name="line-538"></a> <span class="p">}</span>
-<a name="line-539"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">==</span> <span class="n">ColumnTags</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
-<a name="line-540"></a> <span class="p">{</span>
-<a name="line-541"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_tagList</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-542"></a> <span class="p">{</span>
-<a name="line-543"></a>
-<a name="line-544"></a> <span class="n">QString</span> <span class="n">myTagsList</span><span class="p">;</span>
-<a name="line-545"></a>
-<a name="line-546"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">m_tagList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-547"></a> <span class="p">{</span>
-<a name="line-548"></a> <span class="n">QString</span> <span class="n">myTag</span><span class="p">;</span>
-<a name="line-549"></a>
-<a name="line-550"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">j</span> <span class="o">&lt;</span> <span class="n">m_tagList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span>
-<a name="line-551"></a> <span class="p">{</span>
-<a name="line-552"></a> <span class="n">myTag</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">m_tagList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">at</span><span class="p">(</span><span class="n">j</span><span class="p">).</span><span class="n">tagName</span><span class="p">);</span>
-<a name="line-553"></a>
-<a name="line-554"></a> <span class="k">if</span> <span class="p">(</span><span class="n">j</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-555"></a> <span class="p">{</span>
-<a name="line-556"></a> <span class="n">myTag</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-557"></a> <span class="p">}</span>
-<a name="line-558"></a> <span class="p">}</span>
-<a name="line-559"></a>
-<a name="line-560"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">myTagsList</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-561"></a> <span class="p">{</span>
-<a name="line-562"></a> <span class="n">myTagsList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;, &quot;</span><span class="p">));</span>
-<a name="line-563"></a> <span class="p">}</span>
-<a name="line-564"></a>
-<a name="line-565"></a> <span class="n">myTagsList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">myTag</span><span class="p">);</span>
-<a name="line-566"></a> <span class="p">}</span>
-<a name="line-567"></a>
-<a name="line-568"></a> <span class="k">return</span> <span class="n">myTagsList</span><span class="p">;</span>
-<a name="line-569"></a> <span class="p">}</span>
-<a name="line-570"></a>
-<a name="line-571"></a> <span class="k">return</span> <span class="n">QString</span><span class="p">();</span>
+<a name="line-537"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">columnCount</span><span class="p">(</span><span class="n">toSourceIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">));</span>
+<a name="line-538"></a><span class="p">}</span>
+<a name="line-539"></a>
+<a name="line-540"></a><span class="kt">bool</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">setData</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="cm">/*index*/</span><span class="p">,</span> <span class="k">const</span> <span class="n">QVariant</span><span class="o">&amp;</span> <span class="cm">/*value*/</span><span class="p">,</span> <span class="kt">int</span> <span class="cm">/*role*/</span><span class="p">)</span>
+<a name="line-541"></a><span class="p">{</span>
+<a name="line-542"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-543"></a><span class="p">}</span>
+<a name="line-544"></a>
+<a name="line-545"></a><span class="n">QVariant</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">data</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">index</span><span class="p">,</span> <span class="kt">int</span> <span class="n">role</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-546"></a><span class="p">{</span>
+<a name="line-547"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">index</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
+<a name="line-548"></a> <span class="p">{</span>
+<a name="line-549"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="p">();</span>
+<a name="line-550"></a> <span class="p">}</span>
+<a name="line-551"></a>
+<a name="line-552"></a><span class="cm">/*</span>
+<a name="line-553"></a><span class="cm"> static_cast&lt;TreeBranch*&gt;(index.internalPointer());</span>
+<a name="line-554"></a><span class="cm">*/</span>
+<a name="line-555"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">treeBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+<a name="line-556"></a>
+<a name="line-557"></a> <span class="k">if</span> <span class="p">((</span><span class="o">!</span><span class="n">treeBranch</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">treeBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeChild</span><span class="p">))</span>
+<a name="line-558"></a> <span class="p">{</span>
+<a name="line-559"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">(</span><span class="n">toSourceIndex</span><span class="p">(</span><span class="n">index</span><span class="p">),</span> <span class="n">role</span><span class="p">);</span>
+<a name="line-560"></a> <span class="p">}</span>
+<a name="line-561"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">treeBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeSpacer</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
+<a name="line-562"></a> <span class="p">{</span>
+<a name="line-563"></a> <span class="k">return</span> <span class="n">i18n</span><span class="p">(</span><span class="n">treeBranch</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-564"></a> <span class="p">}</span>
+<a name="line-565"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">treeBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeSpacer</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">ForegroundRole</span><span class="p">))</span>
+<a name="line-566"></a> <span class="p">{</span>
+<a name="line-567"></a> <span class="k">return</span> <span class="n">QColor</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">red</span><span class="p">);</span>
+<a name="line-568"></a> <span class="p">}</span>
+<a name="line-569"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">treeBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
+<a name="line-570"></a> <span class="p">{</span>
+<a name="line-571"></a> <span class="k">return</span> <span class="n">treeBranch</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">;</span>
<a name="line-572"></a> <span class="p">}</span>
-<a name="line-573"></a>
-<a name="line-574"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="p">();</span>
-<a name="line-575"></a><span class="p">}</span>
-<a name="line-576"></a>
-<a name="line-577"></a><span class="kt">void</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">setCoordinates</span><span class="p">(</span><span class="k">const</span> <span class="n">GeoCoordinates</span><span class="o">&amp;</span> <span class="n">newCoordinates</span><span class="p">)</span>
-<a name="line-578"></a><span class="p">{</span>
-<a name="line-579"></a> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">setCoordinates</span><span class="p">(</span><span class="n">newCoordinates</span><span class="p">);</span>
-<a name="line-580"></a> <span class="n">m_dirty</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-573"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">treeBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">ForegroundRole</span><span class="p">))</span>
+<a name="line-574"></a> <span class="p">{</span>
+<a name="line-575"></a> <span class="k">return</span> <span class="n">QColor</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">green</span><span class="p">);</span>
+<a name="line-576"></a> <span class="p">}</span>
+<a name="line-577"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">treeBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">ToolTipRole</span><span class="p">))</span>
+<a name="line-578"></a> <span class="p">{</span>
+<a name="line-579"></a> <span class="k">return</span> <span class="n">i18n</span><span class="p">(</span><span class="n">treeBranch</span><span class="o">-&gt;</span><span class="n">help</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
+<a name="line-580"></a> <span class="p">}</span>
<a name="line-581"></a>
-<a name="line-582"></a> <span class="n">emitDataChanged</span><span class="p">();</span>
+<a name="line-582"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="p">();</span>
<a name="line-583"></a><span class="p">}</span>
<a name="line-584"></a>
-<a name="line-585"></a><span class="kt">void</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">setModel</span><span class="p">(</span><span class="n">GPSItemModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">model</span><span class="p">)</span>
+<a name="line-585"></a><span class="n">QModelIndex</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">index</span><span class="p">(</span><span class="kt">int</span> <span class="n">row</span><span class="p">,</span> <span class="kt">int</span> <span class="n">column</span><span class="p">,</span> <span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">parent</span><span class="p">)</span> <span class="k">const</span>
<a name="line-586"></a><span class="p">{</span>
-<a name="line-587"></a> <span class="n">m_model</span> <span class="o">=</span> <span class="n">model</span><span class="p">;</span>
-<a name="line-588"></a><span class="p">}</span>
-<a name="line-589"></a>
-<a name="line-590"></a><span class="kt">void</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">emitDataChanged</span><span class="p">()</span>
-<a name="line-591"></a><span class="p">{</span>
-<a name="line-592"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_model</span><span class="p">)</span>
-<a name="line-593"></a> <span class="p">{</span>
-<a name="line-594"></a> <span class="n">m_model</span><span class="o">-&gt;</span><span class="n">itemChanged</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
-<a name="line-595"></a> <span class="p">}</span>
-<a name="line-596"></a><span class="p">}</span>
-<a name="line-597"></a>
-<a name="line-598"></a><span class="kt">void</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">GPSItemModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">model</span><span class="p">)</span>
-<a name="line-599"></a><span class="p">{</span>
-<a name="line-600"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setColumnCount</span><span class="p">(</span><span class="n">ColumnGPSItemContainerCount</span><span class="p">);</span>
-<a name="line-601"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnThumbnail</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Thumbnail&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
-<a name="line-602"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnFilename</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Filename&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
-<a name="line-603"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnDateTime</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Date and time&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
-<a name="line-604"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnLatitude</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Latitude&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
-<a name="line-605"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnLongitude</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Longitude&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
-<a name="line-606"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnAltitude</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Altitude&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
-<a name="line-607"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnAccuracy</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Accuracy&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
-<a name="line-608"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnDOP</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;DOP&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
-<a name="line-609"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnFixType</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Fix type&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
-<a name="line-610"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnNSatellites</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;# satellites&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
-<a name="line-611"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnSpeed</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Speed&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
-<a name="line-612"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnStatus</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Status&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
-<a name="line-613"></a> <span class="n">model</span><span class="o">-&gt;</span><span class="n">setHeaderData</span><span class="p">(</span><span class="n">ColumnTags</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Tags&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">);</span>
-<a name="line-614"></a><span class="p">}</span>
+<a name="line-587"></a> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">row</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">))</span>
+<a name="line-588"></a> <span class="p">{</span>
+<a name="line-589"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-590"></a> <span class="p">}</span>
+<a name="line-591"></a><span class="cm">/*</span>
+<a name="line-592"></a><span class="cm"> if (parent.isValid())</span>
+<a name="line-593"></a><span class="cm"> {</span>
+<a name="line-594"></a><span class="cm"> parentBranch = static_cast&lt;TreeBranch*&gt;(parent.internalPointer());</span>
+<a name="line-595"></a><span class="cm"> }</span>
+<a name="line-596"></a><span class="cm">*/</span>
+<a name="line-597"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span><span class="c1">//d-&gt;rootTag;</span>
+<a name="line-598"></a>
+<a name="line-599"></a> <span class="c1">// this should not happen!</span>
+<a name="line-600"></a>
+<a name="line-601"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">parentBranch</span><span class="p">)</span>
+<a name="line-602"></a> <span class="p">{</span>
+<a name="line-603"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-604"></a> <span class="p">}</span>
+<a name="line-605"></a>
+<a name="line-606"></a> <span class="k">if</span> <span class="p">(</span><span class="n">row</span> <span class="o">&lt;</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">())</span>
+<a name="line-607"></a> <span class="p">{</span>
+<a name="line-608"></a> <span class="k">return</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">column</span><span class="p">,</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">row</span><span class="p">]);</span>
+<a name="line-609"></a> <span class="p">}</span>
+<a name="line-610"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">row</span> <span class="o">&gt;=</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">())</span> <span class="o">&amp;&amp;</span>
+<a name="line-611"></a> <span class="p">(</span><span class="n">row</span> <span class="o">&lt;</span> <span class="p">(</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">())))</span>
+<a name="line-612"></a> <span class="p">{</span>
+<a name="line-613"></a> <span class="k">return</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">column</span><span class="p">,</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">row</span><span class="o">-</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()]);</span>
+<a name="line-614"></a> <span class="p">}</span>
<a name="line-615"></a>
-<a name="line-616"></a><span class="kt">bool</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">lessThan</span><span class="p">(</span><span class="k">const</span> <span class="n">GPSItemContainer</span><span class="o">*</span> <span class="k">const</span> <span class="n">otherItem</span><span class="p">,</span> <span class="k">const</span> <span class="kt">int</span> <span class="n">column</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-617"></a><span class="p">{</span>
-<a name="line-618"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">column</span><span class="p">)</span>
-<a name="line-619"></a> <span class="p">{</span>
-<a name="line-620"></a> <span class="k">case</span> <span class="nl">ColumnThumbnail</span><span class="p">:</span>
-<a name="line-621"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-622"></a>
-<a name="line-623"></a> <span class="k">case</span> <span class="nl">ColumnFilename</span><span class="p">:</span>
-<a name="line-624"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_url</span> <span class="o">&lt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_url</span><span class="p">);</span>
-<a name="line-625"></a>
-<a name="line-626"></a> <span class="k">case</span> <span class="nl">ColumnDateTime</span><span class="p">:</span>
-<a name="line-627"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_dateTime</span> <span class="o">&lt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_dateTime</span><span class="p">);</span>
+<a name="line-616"></a> <span class="k">return</span> <span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">row</span> <span class="o">-</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span>
+<a name="line-617"></a> <span class="n">column</span><span class="p">,</span> <span class="n">toSourceIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">)));</span>
+<a name="line-618"></a><span class="p">}</span>
+<a name="line-619"></a>
+<a name="line-620"></a><span class="n">QModelIndex</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">parent</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">index</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-621"></a><span class="p">{</span>
+<a name="line-622"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">currentBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">index</span><span class="p">);</span> <span class="c1">// static_cast&lt;TreeBranch*&gt;(index.internalPointer());</span>
+<a name="line-623"></a>
+<a name="line-624"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">currentBranch</span><span class="p">)</span>
+<a name="line-625"></a> <span class="p">{</span>
+<a name="line-626"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-627"></a> <span class="p">}</span>
<a name="line-628"></a>
-<a name="line-629"></a> <span class="k">case</span> <span class="nl">ColumnAltitude</span><span class="p">:</span>
-<a name="line-630"></a> <span class="p">{</span>
-<a name="line-631"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasAltitude</span><span class="p">())</span>
-<a name="line-632"></a> <span class="p">{</span>
-<a name="line-633"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-634"></a> <span class="p">}</span>
-<a name="line-635"></a>
-<a name="line-636"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasAltitude</span><span class="p">())</span>
-<a name="line-637"></a> <span class="p">{</span>
-<a name="line-638"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-639"></a> <span class="p">}</span>
-<a name="line-640"></a>
-<a name="line-641"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">alt</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">alt</span><span class="p">());</span>
-<a name="line-642"></a> <span class="p">}</span>
-<a name="line-643"></a>
-<a name="line-644"></a> <span class="k">case</span> <span class="nl">ColumnNSatellites</span><span class="p">:</span>
-<a name="line-645"></a> <span class="p">{</span>
-<a name="line-646"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">())</span>
-<a name="line-647"></a> <span class="p">{</span>
-<a name="line-648"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-649"></a> <span class="p">}</span>
-<a name="line-650"></a>
-<a name="line-651"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">())</span>
-<a name="line-652"></a> <span class="p">{</span>
-<a name="line-653"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-654"></a> <span class="p">}</span>
-<a name="line-655"></a>
-<a name="line-656"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getNSatellites</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getNSatellites</span><span class="p">());</span>
-<a name="line-657"></a> <span class="p">}</span>
-<a name="line-658"></a>
-<a name="line-659"></a> <span class="k">case</span> <span class="nl">ColumnAccuracy</span><span class="p">:</span>
-<a name="line-660"></a> <span class="p">{</span>
-<a name="line-661"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">myWarning</span> <span class="o">=</span> <span class="n">getWarningLevelFromGPSDataContainer</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">);</span>
-<a name="line-662"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">otherWarning</span> <span class="o">=</span> <span class="n">getWarningLevelFromGPSDataContainer</span><span class="p">(</span><span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">);</span>
-<a name="line-663"></a>
-<a name="line-664"></a> <span class="k">if</span> <span class="p">(</span><span class="n">myWarning</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-665"></a> <span class="p">{</span>
-<a name="line-666"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-667"></a> <span class="p">}</span>
-<a name="line-668"></a>
-<a name="line-669"></a> <span class="k">if</span> <span class="p">(</span><span class="n">otherWarning</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-670"></a> <span class="p">{</span>
-<a name="line-671"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-672"></a> <span class="p">}</span>
-<a name="line-673"></a>
-<a name="line-674"></a> <span class="k">if</span> <span class="p">(</span><span class="n">myWarning</span> <span class="o">!=</span> <span class="n">otherWarning</span><span class="p">)</span>
-<a name="line-675"></a> <span class="p">{</span>
-<a name="line-676"></a> <span class="k">return</span> <span class="p">(</span><span class="n">myWarning</span> <span class="o">&lt;</span> <span class="n">otherWarning</span><span class="p">);</span>
-<a name="line-677"></a> <span class="p">}</span>
-<a name="line-678"></a>
-<a name="line-679"></a> <span class="c1">// TODO: this may not be the best way to sort images with equal warning levels</span>
-<a name="line-680"></a> <span class="c1">// but it works for now</span>
-<a name="line-681"></a>
-<a name="line-682"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasDop</span><span class="p">()</span> <span class="o">!=</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasDop</span><span class="p">())</span>
-<a name="line-683"></a> <span class="p">{</span>
-<a name="line-684"></a> <span class="k">return</span> <span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasDop</span><span class="p">();</span>
-<a name="line-685"></a> <span class="p">}</span>
+<a name="line-629"></a> <span class="k">if</span> <span class="p">((</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeSpacer</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">))</span>
+<a name="line-630"></a> <span class="p">{</span>
+<a name="line-631"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentBranch</span> <span class="o">=</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">;</span>
+<a name="line-632"></a>
+<a name="line-633"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">parentBranch</span><span class="p">)</span>
+<a name="line-634"></a> <span class="p">{</span>
+<a name="line-635"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-636"></a> <span class="p">}</span>
+<a name="line-637"></a>
+<a name="line-638"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">gParentBranch</span> <span class="o">=</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">;</span>
+<a name="line-639"></a>
+<a name="line-640"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">gParentBranch</span><span class="p">)</span>
+<a name="line-641"></a> <span class="p">{</span>
+<a name="line-642"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-643"></a> <span class="p">}</span>
+<a name="line-644"></a>
+<a name="line-645"></a> <span class="k">if</span> <span class="p">(</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeSpacer</span><span class="p">)</span>
+<a name="line-646"></a> <span class="p">{</span>
+<a name="line-647"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">parentRow</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">parentRow</span> <span class="o">&lt;</span> <span class="n">gParentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">parentRow</span><span class="p">)</span>
+<a name="line-648"></a> <span class="p">{</span>
+<a name="line-649"></a> <span class="k">if</span> <span class="p">(</span><span class="n">gParentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">parentRow</span><span class="p">]</span> <span class="o">==</span> <span class="n">parentBranch</span><span class="p">)</span>
+<a name="line-650"></a> <span class="p">{</span>
+<a name="line-651"></a> <span class="k">return</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">parentRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">parentBranch</span><span class="p">);</span>
+<a name="line-652"></a> <span class="p">}</span>
+<a name="line-653"></a> <span class="p">}</span>
+<a name="line-654"></a>
+<a name="line-655"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-656"></a> <span class="p">}</span>
+<a name="line-657"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">)</span>
+<a name="line-658"></a> <span class="p">{</span>
+<a name="line-659"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">parentRow</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">parentRow</span> <span class="o">&lt;</span> <span class="n">gParentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">parentRow</span><span class="p">)</span>
+<a name="line-660"></a> <span class="p">{</span>
+<a name="line-661"></a> <span class="k">if</span> <span class="p">(</span><span class="n">gParentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">parentRow</span><span class="p">]</span> <span class="o">==</span> <span class="n">parentBranch</span><span class="p">)</span>
+<a name="line-662"></a> <span class="p">{</span>
+<a name="line-663"></a> <span class="k">return</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">parentRow</span><span class="o">+</span><span class="n">gParentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span> <span class="mi">0</span><span class="p">,</span> <span class="n">parentBranch</span><span class="p">);</span>
+<a name="line-664"></a> <span class="p">}</span>
+<a name="line-665"></a> <span class="p">}</span>
+<a name="line-666"></a> <span class="p">}</span>
+<a name="line-667"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeChild</span><span class="p">)</span>
+<a name="line-668"></a> <span class="p">{</span>
+<a name="line-669"></a> <span class="c1">// TODO: don&#39;t we have a function for this?</span>
+<a name="line-670"></a>
+<a name="line-671"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">parentRow</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">parentRow</span> <span class="o">&lt;</span> <span class="n">gParentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">parentRow</span><span class="p">)</span>
+<a name="line-672"></a> <span class="p">{</span>
+<a name="line-673"></a> <span class="k">if</span> <span class="p">(</span><span class="n">gParentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">[</span><span class="n">parentRow</span><span class="p">]</span> <span class="o">==</span> <span class="n">parentBranch</span><span class="p">)</span>
+<a name="line-674"></a> <span class="p">{</span>
+<a name="line-675"></a> <span class="k">return</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">parentRow</span> <span class="o">+</span> <span class="n">gParentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">gParentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span>
+<a name="line-676"></a> <span class="mi">0</span><span class="p">,</span> <span class="n">parentBranch</span><span class="p">);</span>
+<a name="line-677"></a> <span class="p">}</span>
+<a name="line-678"></a> <span class="p">}</span>
+<a name="line-679"></a>
+<a name="line-680"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-681"></a> <span class="p">}</span>
+<a name="line-682"></a> <span class="p">}</span>
+<a name="line-683"></a>
+<a name="line-684"></a> <span class="k">return</span> <span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">(</span><span class="n">toSourceIndex</span><span class="p">(</span><span class="n">index</span><span class="p">)));</span>
+<a name="line-685"></a><span class="p">}</span>
<a name="line-686"></a>
-<a name="line-687"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasDop</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasDop</span><span class="p">())</span>
-<a name="line-688"></a> <span class="p">{</span>
-<a name="line-689"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getDop</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getDop</span><span class="p">());</span>
-<a name="line-690"></a> <span class="p">}</span>
-<a name="line-691"></a>
-<a name="line-692"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasFixType</span><span class="p">()</span> <span class="o">!=</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasFixType</span><span class="p">())</span>
-<a name="line-693"></a> <span class="p">{</span>
-<a name="line-694"></a> <span class="k">return</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasFixType</span><span class="p">();</span>
-<a name="line-695"></a> <span class="p">}</span>
+<a name="line-687"></a><span class="kt">int</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">rowCount</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">parent</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-688"></a><span class="p">{</span>
+<a name="line-689"></a><span class="cm">/*</span>
+<a name="line-690"></a><span class="cm"> parent.isValid() ? static_cast&lt;TreeBranch*&gt;(parent.internalPointer()) : d-&gt;rootTag;</span>
+<a name="line-691"></a><span class="cm">*/</span>
+<a name="line-692"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+<a name="line-693"></a> <span class="kt">int</span> <span class="n">myRowCount</span> <span class="o">=</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">();</span>
+<a name="line-694"></a>
+<a name="line-695"></a> <span class="c1">// TODO: we don&#39;t know whether the oldChildren have been set up, therefore query the source model</span>
<a name="line-696"></a>
-<a name="line-697"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasFixType</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasFixType</span><span class="p">())</span>
-<a name="line-698"></a> <span class="p">{</span>
-<a name="line-699"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getFixType</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getFixType</span><span class="p">());</span>
-<a name="line-700"></a> <span class="p">}</span>
-<a name="line-701"></a>
-<a name="line-702"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">()</span> <span class="o">!=</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">())</span>
-<a name="line-703"></a> <span class="p">{</span>
-<a name="line-704"></a> <span class="k">return</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">();</span>
-<a name="line-705"></a> <span class="p">}</span>
-<a name="line-706"></a>
-<a name="line-707"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">())</span>
-<a name="line-708"></a> <span class="p">{</span>
-<a name="line-709"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getNSatellites</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getNSatellites</span><span class="p">());</span>
-<a name="line-710"></a> <span class="p">}</span>
-<a name="line-711"></a>
-<a name="line-712"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-713"></a> <span class="p">}</span>
-<a name="line-714"></a>
-<a name="line-715"></a> <span class="k">case</span> <span class="nl">ColumnDOP</span><span class="p">:</span>
-<a name="line-716"></a> <span class="p">{</span>
-<a name="line-717"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasDop</span><span class="p">())</span>
-<a name="line-718"></a> <span class="p">{</span>
-<a name="line-719"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-720"></a> <span class="p">}</span>
-<a name="line-721"></a>
-<a name="line-722"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasDop</span><span class="p">())</span>
-<a name="line-723"></a> <span class="p">{</span>
-<a name="line-724"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-725"></a> <span class="p">}</span>
-<a name="line-726"></a>
-<a name="line-727"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getDop</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getDop</span><span class="p">());</span>
-<a name="line-728"></a> <span class="p">}</span>
-<a name="line-729"></a>
-<a name="line-730"></a> <span class="k">case</span> <span class="nl">ColumnFixType</span><span class="p">:</span>
-<a name="line-731"></a> <span class="p">{</span>
-<a name="line-732"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasFixType</span><span class="p">())</span>
-<a name="line-733"></a> <span class="p">{</span>
-<a name="line-734"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-735"></a> <span class="p">}</span>
-<a name="line-736"></a>
-<a name="line-737"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasFixType</span><span class="p">())</span>
-<a name="line-738"></a> <span class="p">{</span>
-<a name="line-739"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-740"></a> <span class="p">}</span>
+<a name="line-697"></a> <span class="k">if</span> <span class="p">(</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeChild</span><span class="p">)</span>
+<a name="line-698"></a> <span class="p">{</span>
+<a name="line-699"></a> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">sourceIndex</span> <span class="o">=</span> <span class="n">toSourceIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+<a name="line-700"></a> <span class="n">myRowCount</span> <span class="o">+=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">sourceIndex</span><span class="p">);</span>
+<a name="line-701"></a> <span class="p">}</span>
+<a name="line-702"></a>
+<a name="line-703"></a> <span class="k">return</span> <span class="n">myRowCount</span><span class="p">;</span>
+<a name="line-704"></a><span class="p">}</span>
+<a name="line-705"></a>
+<a name="line-706"></a><span class="kt">bool</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">setHeaderData</span><span class="p">(</span><span class="kt">int</span> <span class="cm">/*section*/</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Orientation</span> <span class="cm">/*orientation*/</span><span class="p">,</span> <span class="k">const</span> <span class="n">QVariant</span><span class="o">&amp;</span> <span class="cm">/*value*/</span><span class="p">,</span> <span class="kt">int</span> <span class="cm">/*role*/</span><span class="p">)</span>
+<a name="line-707"></a><span class="p">{</span>
+<a name="line-708"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-709"></a><span class="p">}</span>
+<a name="line-710"></a>
+<a name="line-711"></a><span class="n">QVariant</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">headerData</span><span class="p">(</span><span class="kt">int</span> <span class="n">section</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Orientation</span> <span class="n">orientation</span><span class="p">,</span> <span class="kt">int</span> <span class="n">role</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-712"></a><span class="p">{</span>
+<a name="line-713"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">headerData</span><span class="p">(</span><span class="n">section</span><span class="p">,</span> <span class="n">orientation</span><span class="p">,</span> <span class="n">role</span><span class="p">);</span>
+<a name="line-714"></a><span class="p">}</span>
+<a name="line-715"></a>
+<a name="line-716"></a><span class="n">Qt</span><span class="o">::</span><span class="n">ItemFlags</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">flags</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">index</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-717"></a><span class="p">{</span>
+<a name="line-718"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">currentBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+<a name="line-719"></a>
+<a name="line-720"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span> <span class="o">&amp;&amp;</span> <span class="p">((</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeSpacer</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">))</span> <span class="p">)</span>
+<a name="line-721"></a> <span class="p">{</span>
+<a name="line-722"></a> <span class="k">return</span> <span class="n">QAbstractItemModel</span><span class="o">::</span><span class="n">flags</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+<a name="line-723"></a> <span class="p">}</span>
+<a name="line-724"></a>
+<a name="line-725"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">flags</span><span class="p">(</span><span class="n">toSourceIndex</span><span class="p">(</span><span class="n">index</span><span class="p">));</span>
+<a name="line-726"></a><span class="p">}</span>
+<a name="line-727"></a>
+<a name="line-728"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotSourceDataChanged</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">topLeft</span><span class="p">,</span> <span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">bottomRight</span><span class="p">)</span>
+<a name="line-729"></a><span class="p">{</span>
+<a name="line-730"></a> <span class="n">emit</span> <span class="n">dataChanged</span><span class="p">(</span><span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">topLeft</span><span class="p">),</span><span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">bottomRight</span><span class="p">));</span>
+<a name="line-731"></a><span class="p">}</span>
+<a name="line-732"></a>
+<a name="line-733"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotSourceHeaderDataChanged</span><span class="p">(</span><span class="k">const</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Orientation</span> <span class="n">orientation</span><span class="p">,</span> <span class="kt">int</span> <span class="n">first</span><span class="p">,</span> <span class="kt">int</span> <span class="n">last</span><span class="p">)</span>
+<a name="line-734"></a><span class="p">{</span>
+<a name="line-735"></a> <span class="n">emit</span> <span class="n">headerDataChanged</span><span class="p">(</span><span class="n">orientation</span><span class="p">,</span> <span class="n">first</span><span class="p">,</span> <span class="n">last</span><span class="p">);</span>
+<a name="line-736"></a><span class="p">}</span>
+<a name="line-737"></a>
+<a name="line-738"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotColumnsAboutToBeInserted</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">parent</span><span class="p">,</span> <span class="kt">int</span> <span class="n">start</span><span class="p">,</span> <span class="kt">int</span> <span class="n">end</span><span class="p">)</span>
+<a name="line-739"></a><span class="p">{</span>
+<a name="line-740"></a> <span class="c1">//TODO: Should we do something here?</span>
<a name="line-741"></a>
-<a name="line-742"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getFixType</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getFixType</span><span class="p">());</span>
-<a name="line-743"></a> <span class="p">}</span>
+<a name="line-742"></a> <span class="n">beginInsertColumns</span><span class="p">(</span><span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span> <span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">);</span>
+<a name="line-743"></a><span class="p">}</span>
<a name="line-744"></a>
-<a name="line-745"></a> <span class="k">case</span> <span class="nl">ColumnSpeed</span><span class="p">:</span>
-<a name="line-746"></a> <span class="p">{</span>
-<a name="line-747"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasSpeed</span><span class="p">())</span>
-<a name="line-748"></a> <span class="p">{</span>
-<a name="line-749"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-750"></a> <span class="p">}</span>
-<a name="line-751"></a>
-<a name="line-752"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasSpeed</span><span class="p">())</span>
-<a name="line-753"></a> <span class="p">{</span>
-<a name="line-754"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-755"></a> <span class="p">}</span>
-<a name="line-756"></a>
-<a name="line-757"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getSpeed</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getSpeed</span><span class="p">());</span>
-<a name="line-758"></a> <span class="p">}</span>
-<a name="line-759"></a>
-<a name="line-760"></a> <span class="k">case</span> <span class="nl">ColumnLatitude</span><span class="p">:</span>
-<a name="line-761"></a> <span class="p">{</span>
-<a name="line-762"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasCoordinates</span><span class="p">())</span>
-<a name="line-763"></a> <span class="p">{</span>
-<a name="line-764"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-765"></a> <span class="p">}</span>
-<a name="line-766"></a>
-<a name="line-767"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasCoordinates</span><span class="p">())</span>
-<a name="line-768"></a> <span class="p">{</span>
-<a name="line-769"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-770"></a> <span class="p">}</span>
-<a name="line-771"></a>
-<a name="line-772"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">lat</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">lat</span><span class="p">());</span>
-<a name="line-773"></a> <span class="p">}</span>
-<a name="line-774"></a>
-<a name="line-775"></a> <span class="k">case</span> <span class="nl">ColumnLongitude</span><span class="p">:</span>
-<a name="line-776"></a> <span class="p">{</span>
-<a name="line-777"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasCoordinates</span><span class="p">())</span>
-<a name="line-778"></a> <span class="p">{</span>
-<a name="line-779"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-780"></a> <span class="p">}</span>
-<a name="line-781"></a>
-<a name="line-782"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasCoordinates</span><span class="p">())</span>
-<a name="line-783"></a> <span class="p">{</span>
-<a name="line-784"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-785"></a> <span class="p">}</span>
-<a name="line-786"></a>
-<a name="line-787"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">lon</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">lon</span><span class="p">());</span>
-<a name="line-788"></a> <span class="p">}</span>
-<a name="line-789"></a>
-<a name="line-790"></a> <span class="k">case</span> <span class="nl">ColumnStatus</span><span class="p">:</span>
-<a name="line-791"></a> <span class="p">{</span>
-<a name="line-792"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_dirty</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">otherItem</span><span class="o">-&gt;</span><span class="n">m_dirty</span><span class="p">);</span>
-<a name="line-793"></a> <span class="p">}</span>
+<a name="line-745"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotColumnsAboutToBeMoved</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">sourceParent</span><span class="p">,</span>
+<a name="line-746"></a> <span class="kt">int</span> <span class="n">sourceStart</span><span class="p">,</span>
+<a name="line-747"></a> <span class="kt">int</span> <span class="n">sourceEnd</span><span class="p">,</span>
+<a name="line-748"></a> <span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">destinationParent</span><span class="p">,</span>
+<a name="line-749"></a> <span class="kt">int</span> <span class="n">destinationColumn</span><span class="p">)</span>
+<a name="line-750"></a><span class="p">{</span>
+<a name="line-751"></a> <span class="n">beginMoveColumns</span><span class="p">(</span><span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">sourceParent</span><span class="p">),</span> <span class="n">sourceStart</span><span class="p">,</span> <span class="n">sourceEnd</span><span class="p">,</span> <span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">destinationParent</span><span class="p">),</span> <span class="n">destinationColumn</span><span class="p">);</span>
+<a name="line-752"></a><span class="p">}</span>
+<a name="line-753"></a>
+<a name="line-754"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotColumnsAboutToBeRemoved</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">parent</span><span class="p">,</span> <span class="kt">int</span> <span class="n">start</span><span class="p">,</span> <span class="kt">int</span> <span class="n">end</span> <span class="p">)</span>
+<a name="line-755"></a><span class="p">{</span>
+<a name="line-756"></a> <span class="n">beginRemoveColumns</span><span class="p">(</span><span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span> <span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">);</span>
+<a name="line-757"></a><span class="p">}</span>
+<a name="line-758"></a>
+<a name="line-759"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotColumnsInserted</span><span class="p">()</span>
+<a name="line-760"></a><span class="p">{</span>
+<a name="line-761"></a> <span class="n">endInsertColumns</span><span class="p">();</span>
+<a name="line-762"></a><span class="p">}</span>
+<a name="line-763"></a>
+<a name="line-764"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotColumnsMoved</span><span class="p">()</span>
+<a name="line-765"></a><span class="p">{</span>
+<a name="line-766"></a> <span class="n">endMoveColumns</span><span class="p">();</span>
+<a name="line-767"></a><span class="p">}</span>
+<a name="line-768"></a>
+<a name="line-769"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotColumnsRemoved</span><span class="p">()</span>
+<a name="line-770"></a><span class="p">{</span>
+<a name="line-771"></a> <span class="n">endRemoveColumns</span><span class="p">();</span>
+<a name="line-772"></a><span class="p">}</span>
+<a name="line-773"></a>
+<a name="line-774"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotLayoutAboutToBeChanged</span><span class="p">()</span>
+<a name="line-775"></a><span class="p">{</span>
+<a name="line-776"></a> <span class="n">emit</span> <span class="n">layoutAboutToBeChanged</span><span class="p">();</span>
+<a name="line-777"></a><span class="p">}</span>
+<a name="line-778"></a>
+<a name="line-779"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotLayoutChanged</span><span class="p">()</span>
+<a name="line-780"></a><span class="p">{</span>
+<a name="line-781"></a> <span class="n">emit</span> <span class="n">layoutChanged</span><span class="p">();</span>
+<a name="line-782"></a><span class="p">}</span>
+<a name="line-783"></a>
+<a name="line-784"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotModelAboutToBeReset</span><span class="p">()</span>
+<a name="line-785"></a><span class="p">{</span>
+<a name="line-786"></a> <span class="n">beginResetModel</span><span class="p">();</span>
+<a name="line-787"></a><span class="p">}</span>
+<a name="line-788"></a>
+<a name="line-789"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotModelReset</span><span class="p">()</span>
+<a name="line-790"></a><span class="p">{</span>
+<a name="line-791"></a> <span class="n">beginResetModel</span><span class="p">();</span>
+<a name="line-792"></a> <span class="n">endResetModel</span><span class="p">();</span>
+<a name="line-793"></a><span class="p">}</span>
<a name="line-794"></a>
-<a name="line-795"></a> <span class="k">default</span><span class="o">:</span>
-<a name="line-796"></a> <span class="p">{</span>
-<a name="line-797"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-798"></a> <span class="p">}</span>
-<a name="line-799"></a> <span class="p">}</span>
-<a name="line-800"></a><span class="p">}</span>
+<a name="line-795"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotRowsAboutToBeInserted</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">parent</span><span class="p">,</span> <span class="kt">int</span> <span class="n">start</span><span class="p">,</span> <span class="kt">int</span> <span class="n">end</span><span class="p">)</span>
+<a name="line-796"></a><span class="p">{</span>
+<a name="line-797"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentBranch</span> <span class="o">=</span> <span class="n">parent</span><span class="p">.</span><span class="n">isValid</span><span class="p">()</span> <span class="o">?</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">TreeBranch</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">).</span><span class="n">internalPointer</span><span class="p">())</span> <span class="o">:</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">;</span>
+<a name="line-798"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">=</span> <span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+<a name="line-799"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">startInsert</span> <span class="o">=</span> <span class="n">start</span><span class="p">;</span>
+<a name="line-800"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">endInsert</span> <span class="o">=</span> <span class="n">end</span><span class="p">;</span>
<a name="line-801"></a>
-<a name="line-802"></a><span class="n">SaveProperties</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">saveProperties</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-803"></a><span class="p">{</span>
-<a name="line-804"></a> <span class="n">SaveProperties</span> <span class="n">p</span><span class="p">;</span>
-<a name="line-805"></a>
-<a name="line-806"></a> <span class="c1">// do we have gps information?</span>
-<a name="line-807"></a>
-<a name="line-808"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasCoordinates</span><span class="p">())</span>
-<a name="line-809"></a> <span class="p">{</span>
-<a name="line-810"></a> <span class="n">p</span><span class="p">.</span><span class="n">shouldWriteCoordinates</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-811"></a> <span class="n">p</span><span class="p">.</span><span class="n">latitude</span> <span class="o">=</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">lat</span><span class="p">();</span>
-<a name="line-812"></a> <span class="n">p</span><span class="p">.</span><span class="n">longitude</span> <span class="o">=</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">lon</span><span class="p">();</span>
-<a name="line-813"></a>
-<a name="line-814"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasAltitude</span><span class="p">())</span>
-<a name="line-815"></a> <span class="p">{</span>
-<a name="line-816"></a> <span class="n">p</span><span class="p">.</span><span class="n">shouldWriteAltitude</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-817"></a> <span class="n">p</span><span class="p">.</span><span class="n">altitude</span> <span class="o">=</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">alt</span><span class="p">();</span>
-<a name="line-818"></a> <span class="p">}</span>
-<a name="line-819"></a> <span class="k">else</span>
-<a name="line-820"></a> <span class="p">{</span>
-<a name="line-821"></a> <span class="n">p</span><span class="p">.</span><span class="n">shouldRemoveAltitude</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-822"></a> <span class="p">}</span>
-<a name="line-823"></a> <span class="p">}</span>
-<a name="line-824"></a> <span class="k">else</span>
+<a name="line-802"></a> <span class="n">beginInsertRows</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">,</span>
+<a name="line-803"></a> <span class="n">start</span> <span class="o">+</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span>
+<a name="line-804"></a> <span class="n">end</span> <span class="o">+</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">());</span>
+<a name="line-805"></a><span class="p">}</span>
+<a name="line-806"></a>
+<a name="line-807"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotRowsAboutToBeMoved</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">sourceParent</span><span class="p">,</span> <span class="kt">int</span> <span class="n">sourceStart</span><span class="p">,</span> <span class="kt">int</span> <span class="n">sourceEnd</span><span class="p">,</span>
+<a name="line-808"></a> <span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">destinationParent</span><span class="p">,</span> <span class="kt">int</span> <span class="n">destinationRow</span><span class="p">)</span>
+<a name="line-809"></a><span class="p">{</span>
+<a name="line-810"></a> <span class="n">beginMoveRows</span><span class="p">(</span><span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">sourceParent</span><span class="p">),</span> <span class="n">sourceStart</span><span class="p">,</span> <span class="n">sourceEnd</span><span class="p">,</span> <span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">destinationParent</span><span class="p">),</span> <span class="n">destinationRow</span> <span class="p">);</span>
+<a name="line-811"></a><span class="p">}</span>
+<a name="line-812"></a>
+<a name="line-813"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotRowsAboutToBeRemoved</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">parent</span><span class="p">,</span> <span class="kt">int</span> <span class="n">start</span><span class="p">,</span> <span class="kt">int</span> <span class="n">end</span><span class="p">)</span>
+<a name="line-814"></a><span class="p">{</span>
+<a name="line-815"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+<a name="line-816"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">start</span><span class="p">);</span>
+<a name="line-817"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">end</span><span class="p">);</span>
+<a name="line-818"></a><span class="p">}</span>
+<a name="line-819"></a>
+<a name="line-820"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotRowsInserted</span><span class="p">()</span>
+<a name="line-821"></a><span class="p">{</span>
+<a name="line-822"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentBranch</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">.</span><span class="n">isValid</span><span class="p">()</span> <span class="o">?</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">TreeBranch</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">.</span><span class="n">internalPointer</span><span class="p">())</span> <span class="o">:</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">;</span>
+<a name="line-823"></a>
+<a name="line-824"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">startInsert</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">endInsert</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-825"></a> <span class="p">{</span>
-<a name="line-826"></a> <span class="n">p</span><span class="p">.</span><span class="n">shouldRemoveCoordinates</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-827"></a> <span class="p">}</span>
-<a name="line-828"></a>
-<a name="line-829"></a> <span class="k">return</span> <span class="n">p</span><span class="p">;</span>
-<a name="line-830"></a><span class="p">}</span>
-<a name="line-831"></a>
-<a name="line-832"></a><span class="n">QString</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">saveChanges</span><span class="p">()</span>
-<a name="line-833"></a><span class="p">{</span>
-<a name="line-834"></a> <span class="n">SaveProperties</span> <span class="n">p</span> <span class="o">=</span> <span class="n">saveProperties</span><span class="p">();</span>
+<a name="line-826"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">newBranch</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TreeBranch</span><span class="p">();</span>
+<a name="line-827"></a> <span class="n">newBranch</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parentBranch</span><span class="p">;</span>
+<a name="line-828"></a> <span class="n">newBranch</span><span class="o">-&gt;</span><span class="n">sourceIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">);</span>
+<a name="line-829"></a> <span class="n">newBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">=</span> <span class="n">TypeChild</span><span class="p">;</span>
+<a name="line-830"></a>
+<a name="line-831"></a> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">newBranch</span><span class="p">);</span>
+<a name="line-832"></a> <span class="p">}</span>
+<a name="line-833"></a>
+<a name="line-834"></a> <span class="n">endInsertRows</span><span class="p">();</span>
<a name="line-835"></a>
-<a name="line-836"></a> <span class="n">QString</span> <span class="n">returnString</span><span class="p">;</span>
-<a name="line-837"></a>
-<a name="line-838"></a> <span class="c1">// first try to write the information to the image file</span>
-<a name="line-839"></a>
-<a name="line-840"></a><span class="hll"> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span><span class='error2'>&lt;--- Shadowed declaration</span>
-</span><a name="line-841"></a> <span class="n">QScopedPointer</span><span class="o">&lt;</span><span class="n">DMetadata</span><span class="o">&gt;</span> <span class="n">meta</span><span class="p">(</span><span class="n">getMetadataForFile</span><span class="p">());</span>
-<a name="line-842"></a>
-<a name="line-843"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">meta</span><span class="p">)</span>
-<a name="line-844"></a> <span class="p">{</span>
-<a name="line-845"></a> <span class="c1">// TODO: more verbosity!</span>
-<a name="line-846"></a>
-<a name="line-847"></a> <span class="n">returnString</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to open file.&quot;</span><span class="p">);</span>
-<a name="line-848"></a> <span class="p">}</span>
-<a name="line-849"></a> <span class="k">else</span>
-<a name="line-850"></a> <span class="p">{</span>
-<a name="line-851"></a> <span class="k">if</span> <span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">shouldWriteCoordinates</span><span class="p">)</span>
-<a name="line-852"></a> <span class="p">{</span>
-<a name="line-853"></a> <span class="k">if</span> <span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">shouldWriteAltitude</span><span class="p">)</span>
-<a name="line-854"></a> <span class="p">{</span>
-<a name="line-855"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">setGPSInfo</span><span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">altitude</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">latitude</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">longitude</span><span class="p">);</span>
-<a name="line-856"></a> <span class="p">}</span>
-<a name="line-857"></a> <span class="k">else</span>
-<a name="line-858"></a> <span class="p">{</span>
-<a name="line-859"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">setGPSInfo</span><span class="p">(</span><span class="k">nullptr</span><span class="p">,</span>
-<a name="line-860"></a> <span class="n">p</span><span class="p">.</span><span class="n">latitude</span><span class="p">,</span> <span class="n">p</span><span class="p">.</span><span class="n">longitude</span><span class="p">);</span>
-<a name="line-861"></a> <span class="p">}</span>
-<a name="line-862"></a>
-<a name="line-863"></a> <span class="c1">// write all other GPS information here too</span>
-<a name="line-864"></a>
-<a name="line-865"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span> <span class="o">&amp;&amp;</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasSpeed</span><span class="p">())</span>
-<a name="line-866"></a> <span class="p">{</span>
-<a name="line-867"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">setExifXmpTagDataVariant</span><span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span>
-<a name="line-868"></a> <span class="s">&quot;Exif.GPSInfo.GPSSpeedRef&quot;</span><span class="p">,</span>
-<a name="line-869"></a> <span class="s">&quot;Xmp.exif.GPSSpeedRef&quot;</span><span class="p">,</span>
-<a name="line-870"></a> <span class="n">QVariant</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;K&quot;</span><span class="p">)));</span>
-<a name="line-871"></a>
-<a name="line-872"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span><span class="p">)</span>
-<a name="line-873"></a> <span class="p">{</span>
-<a name="line-874"></a> <span class="k">const</span> <span class="n">qreal</span> <span class="n">speedInMetersPerSecond</span> <span class="o">=</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">getSpeed</span><span class="p">();</span>
+<a name="line-836"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-837"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">startInsert</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+<a name="line-838"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">endInsert</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+<a name="line-839"></a><span class="p">}</span>
+<a name="line-840"></a>
+<a name="line-841"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotRowsMoved</span><span class="p">()</span>
+<a name="line-842"></a><span class="p">{</span>
+<a name="line-843"></a> <span class="n">endMoveRows</span><span class="p">();</span>
+<a name="line-844"></a><span class="p">}</span>
+<a name="line-845"></a>
+<a name="line-846"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotRowsRemoved</span><span class="p">()</span>
+<a name="line-847"></a><span class="p">{</span>
+<a name="line-848"></a><span class="p">}</span>
+<a name="line-849"></a>
+<a name="line-850"></a><span class="cm">/**</span>
+<a name="line-851"></a><span class="cm"> * Deletes a tag.</span>
+<a name="line-852"></a><span class="cm"> * @param currentIndex The tag found at this index will be deleted.</span>
+<a name="line-853"></a><span class="cm"> */</span>
+<a name="line-854"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">deleteTag</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">currentIndex</span><span class="p">)</span>
+<a name="line-855"></a><span class="p">{</span>
+<a name="line-856"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">currentIndex</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
+<a name="line-857"></a> <span class="p">{</span>
+<a name="line-858"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-859"></a> <span class="p">}</span>
+<a name="line-860"></a>
+<a name="line-861"></a> <span class="n">QModelIndex</span> <span class="n">parentIndex</span> <span class="o">=</span> <span class="n">currentIndex</span><span class="p">.</span><span class="n">parent</span><span class="p">();</span>
+<a name="line-862"></a> <span class="kt">int</span> <span class="n">currentRow</span> <span class="o">=</span> <span class="n">currentIndex</span><span class="p">.</span><span class="n">row</span><span class="p">();</span>
+<a name="line-863"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">parentIndex</span><span class="p">);</span>
+<a name="line-864"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">currentChildBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">);</span>
+<a name="line-865"></a>
+<a name="line-866"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeChild</span><span class="p">)</span>
+<a name="line-867"></a> <span class="p">{</span>
+<a name="line-868"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-869"></a> <span class="p">}</span>
+<a name="line-870"></a>
+<a name="line-871"></a> <span class="k">if</span> <span class="p">((</span><span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">))</span>
+<a name="line-872"></a> <span class="p">{</span>
+<a name="line-873"></a> <span class="n">beginMoveRows</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span>
+<a name="line-874"></a> <span class="n">parentIndex</span><span class="p">,</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">());</span>
<a name="line-875"></a>
-<a name="line-876"></a> <span class="c1">// km/h = 0.001 * m / ( s * 1/(60*60) ) = 3.6 * m/s</span>
-<a name="line-877"></a>
-<a name="line-878"></a> <span class="k">const</span> <span class="n">qreal</span> <span class="n">speedInKilometersPerHour</span> <span class="o">=</span> <span class="mf">3.6</span> <span class="o">*</span> <span class="n">speedInMetersPerSecond</span><span class="p">;</span>
-<a name="line-879"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">setExifXmpTagDataVariant</span><span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="s">&quot;Exif.GPSInfo.GPSSpeed&quot;</span><span class="p">,</span> <span class="s">&quot;Xmp.exif.GPSSpeed&quot;</span><span class="p">,</span> <span class="n">QVariant</span><span class="p">(</span><span class="n">speedInKilometersPerHour</span><span class="p">));</span>
-<a name="line-880"></a> <span class="p">}</span>
-<a name="line-881"></a> <span class="p">}</span>
-<a name="line-882"></a>
-<a name="line-883"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span> <span class="o">&amp;&amp;</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">())</span>
-<a name="line-884"></a> <span class="p">{</span>
-<a name="line-885"></a> <span class="cm">/**</span>
-<a name="line-886"></a><span class="cm"> * @todo According to the EXIF 2.2 spec, GPSSatellites is a free form field which can either hold only the</span>
-<a name="line-887"></a><span class="cm"> * number of satellites or more details about each satellite used. For now, we just write</span>
-<a name="line-888"></a><span class="cm"> * the number of satellites. Are we using the correct format for the number of satellites here?</span>
-<a name="line-889"></a><span class="cm"> */</span>
-<a name="line-890"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">setExifXmpTagDataVariant</span><span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span>
-<a name="line-891"></a> <span class="s">&quot;Exif.GPSInfo.GPSSatellites&quot;</span><span class="p">,</span> <span class="s">&quot;Xmp.exif.GPSSatellites&quot;</span><span class="p">,</span>
-<a name="line-892"></a> <span class="n">QVariant</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getNSatellites</span><span class="p">())));</span>
-<a name="line-893"></a> <span class="p">}</span>
-<a name="line-894"></a>
-<a name="line-895"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span> <span class="o">&amp;&amp;</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasFixType</span><span class="p">())</span>
-<a name="line-896"></a> <span class="p">{</span>
-<a name="line-897"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">setExifXmpTagDataVariant</span><span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span>
-<a name="line-898"></a> <span class="s">&quot;Exif.GPSInfo.GPSMeasureMode&quot;</span><span class="p">,</span> <span class="s">&quot;Xmp.exif.GPSMeasureMode&quot;</span><span class="p">,</span>
-<a name="line-899"></a> <span class="n">QVariant</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getFixType</span><span class="p">())));</span>
-<a name="line-900"></a> <span class="p">}</span>
-<a name="line-901"></a>
-<a name="line-902"></a> <span class="c1">// write DOP</span>
+<a name="line-876"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">j</span> <span class="o">&lt;</span> <span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span>
+<a name="line-877"></a> <span class="p">{</span>
+<a name="line-878"></a> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">j</span><span class="p">]);</span>
+<a name="line-879"></a> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">last</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parentBranch</span><span class="p">;</span>
+<a name="line-880"></a><span class="cm">/*</span>
+<a name="line-881"></a><span class="cm"> QModelIndex testIndex =</span>
+<a name="line-882"></a><span class="cm">*/</span>
+<a name="line-883"></a> <span class="n">createIndex</span><span class="p">(</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">last</span><span class="p">());</span>
+<a name="line-884"></a> <span class="p">}</span>
+<a name="line-885"></a>
+<a name="line-886"></a> <span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
+<a name="line-887"></a> <span class="n">endMoveRows</span><span class="p">();</span>
+<a name="line-888"></a>
+<a name="line-889"></a> <span class="n">beginMoveRows</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">,</span> <span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span>
+<a name="line-890"></a> <span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span>
+<a name="line-891"></a> <span class="n">parentIndex</span><span class="p">,</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">());</span>
+<a name="line-892"></a>
+<a name="line-893"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span>
+<a name="line-894"></a> <span class="n">j</span> <span class="o">&lt;</span> <span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span>
+<a name="line-895"></a> <span class="p">{</span>
+<a name="line-896"></a> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">j</span> <span class="o">-</span> <span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()]);</span>
+<a name="line-897"></a> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">last</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parentBranch</span><span class="p">;</span>
+<a name="line-898"></a> <span class="p">}</span>
+<a name="line-899"></a>
+<a name="line-900"></a> <span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
+<a name="line-901"></a> <span class="n">endMoveRows</span><span class="p">();</span>
+<a name="line-902"></a> <span class="p">}</span>
<a name="line-903"></a>
-<a name="line-904"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span> <span class="o">&amp;&amp;</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">hasDop</span><span class="p">())</span>
-<a name="line-905"></a> <span class="p">{</span>
-<a name="line-906"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">setExifXmpTagDataVariant</span><span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span>
-<a name="line-907"></a> <span class="s">&quot;Exif.GPSInfo.GPSDOP&quot;</span><span class="p">,</span>
-<a name="line-908"></a> <span class="s">&quot;Xmp.exif.GPSDOP&quot;</span><span class="p">,</span>
-<a name="line-909"></a> <span class="n">QVariant</span><span class="p">(</span><span class="n">m_gpsData</span><span class="p">.</span><span class="n">getDop</span><span class="p">()));</span>
-<a name="line-910"></a> <span class="p">}</span>
-<a name="line-911"></a>
-<a name="line-912"></a>
-<a name="line-913"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">success</span><span class="p">)</span>
-<a name="line-914"></a> <span class="p">{</span>
-<a name="line-915"></a> <span class="n">returnString</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to add GPS info to image.&quot;</span><span class="p">);</span>
-<a name="line-916"></a> <span class="p">}</span>
-<a name="line-917"></a> <span class="p">}</span>
-<a name="line-918"></a>
-<a name="line-919"></a> <span class="k">if</span> <span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">shouldRemoveCoordinates</span><span class="p">)</span>
-<a name="line-920"></a> <span class="p">{</span>
-<a name="line-921"></a> <span class="c1">// TODO: remove only the altitude if requested</span>
-<a name="line-922"></a>
-<a name="line-923"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">removeGPSInfo</span><span class="p">();</span>
-<a name="line-924"></a>
-<a name="line-925"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">success</span><span class="p">)</span>
-<a name="line-926"></a> <span class="p">{</span>
-<a name="line-927"></a> <span class="n">returnString</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to remove GPS info from image&quot;</span><span class="p">);</span>
-<a name="line-928"></a> <span class="p">}</span>
-<a name="line-929"></a> <span class="p">}</span>
-<a name="line-930"></a>
-<a name="line-931"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_tagList</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">m_writeXmpTags</span><span class="p">)</span>
-<a name="line-932"></a> <span class="p">{</span>
-<a name="line-933"></a> <span class="n">QStringList</span> <span class="n">tagSeq</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">getXmpTagStringSeq</span><span class="p">(</span><span class="s">&quot;Xmp.digiKam.TagsList&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
-<a name="line-934"></a>
-<a name="line-935"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">m_tagList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-936"></a> <span class="p">{</span>
-<a name="line-937"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="n">currentTagList</span> <span class="o">=</span> <span class="n">m_tagList</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
-<a name="line-938"></a> <span class="n">QString</span> <span class="n">tag</span><span class="p">;</span>
-<a name="line-939"></a>
-<a name="line-940"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">j</span> <span class="o">&lt;</span> <span class="n">currentTagList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span>
-<a name="line-941"></a> <span class="p">{</span>
-<a name="line-942"></a> <span class="n">tag</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">currentTagList</span><span class="p">[</span><span class="n">j</span><span class="p">].</span><span class="n">tagName</span><span class="p">);</span>
-<a name="line-943"></a> <span class="p">}</span>
+<a name="line-904"></a> <span class="n">beginRemoveRows</span><span class="p">(</span><span class="n">parentIndex</span><span class="p">,</span> <span class="n">currentRow</span><span class="p">,</span> <span class="n">currentRow</span><span class="p">);</span>
+<a name="line-905"></a>
+<a name="line-906"></a> <span class="c1">//TODO: is it good here?</span>
+<a name="line-907"></a>
+<a name="line-908"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentRow</span> <span class="o">&lt;</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">())</span>
+<a name="line-909"></a> <span class="p">{</span>
+<a name="line-910"></a> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">removeAt</span><span class="p">(</span><span class="n">currentRow</span><span class="p">);</span>
+<a name="line-911"></a> <span class="p">}</span>
+<a name="line-912"></a> <span class="k">else</span>
+<a name="line-913"></a> <span class="p">{</span>
+<a name="line-914"></a> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">removeAt</span><span class="p">(</span><span class="n">currentRow</span> <span class="o">-</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">());</span>
+<a name="line-915"></a> <span class="p">}</span>
+<a name="line-916"></a>
+<a name="line-917"></a> <span class="n">endRemoveRows</span><span class="p">();</span>
+<a name="line-918"></a><span class="p">}</span>
+<a name="line-919"></a>
+<a name="line-920"></a><span class="cm">/**</span>
+<a name="line-921"></a><span class="cm"> * Deletes all spacers or all new tags below @currentBranch.</span>
+<a name="line-922"></a><span class="cm"> * @param currentBranch The tree branch from where the scan starts.</span>
+<a name="line-923"></a><span class="cm"> * @param currentRow The row of current branch.</span>
+<a name="line-924"></a><span class="cm"> * @param whatShouldRemove The tag type that should to be removed. The options are: spacers or new tags.</span>
+<a name="line-925"></a><span class="cm"> */</span>
+<a name="line-926"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">findAndDeleteSpacersOrNewTags</span><span class="p">(</span> <span class="n">TreeBranch</span><span class="o">*</span> <span class="n">currentBranch</span><span class="p">,</span> <span class="kt">int</span> <span class="n">currentRow</span><span class="p">,</span> <span class="n">Type</span> <span class="n">whatShouldRemove</span><span class="p">)</span>
+<a name="line-927"></a><span class="p">{</span>
+<a name="line-928"></a><span class="cm">/*</span>
+<a name="line-929"></a><span class="cm"> QModelIndex currentIndex =</span>
+<a name="line-930"></a><span class="cm">*/</span>
+<a name="line-931"></a> <span class="n">createIndex</span><span class="p">(</span><span class="n">currentRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">currentBranch</span><span class="p">);</span>
+<a name="line-932"></a>
+<a name="line-933"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-934"></a> <span class="p">{</span>
+<a name="line-935"></a> <span class="n">findAndDeleteSpacersOrNewTags</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">i</span><span class="p">,</span> <span class="n">whatShouldRemove</span><span class="p">);</span>
+<a name="line-936"></a>
+<a name="line-937"></a> <span class="k">if</span> <span class="p">(</span><span class="n">whatShouldRemove</span> <span class="o">==</span> <span class="n">TypeSpacer</span><span class="p">)</span>
+<a name="line-938"></a> <span class="p">{</span>
+<a name="line-939"></a> <span class="n">QModelIndex</span> <span class="n">spacerIndex</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
+<a name="line-940"></a> <span class="n">deleteTag</span><span class="p">(</span><span class="n">spacerIndex</span><span class="p">);</span>
+<a name="line-941"></a> <span class="n">i</span><span class="o">--</span><span class="p">;</span>
+<a name="line-942"></a> <span class="p">}</span>
+<a name="line-943"></a> <span class="p">}</span>
<a name="line-944"></a>
-<a name="line-945"></a> <span class="n">tag</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-946"></a>
-<a name="line-947"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">tagSeq</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">tag</span><span class="p">))</span>
-<a name="line-948"></a> <span class="p">{</span>
-<a name="line-949"></a> <span class="n">tagSeq</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>
-<a name="line-950"></a> <span class="p">}</span>
-<a name="line-951"></a> <span class="p">}</span>
-<a name="line-952"></a>
-<a name="line-953"></a><span class="hll"> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">setXmpTagStringSeq</span><span class="p">(</span><span class="s">&quot;Xmp.digiKam.TagsList&quot;</span><span class="p">,</span> <span class="n">tagSeq</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-954"></a>
-<a name="line-955"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">success</span><span class="p">)</span>
-<a name="line-956"></a> <span class="p">{</span>
-<a name="line-957"></a> <span class="n">returnString</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to save tags to file.&quot;</span><span class="p">);</span>
-<a name="line-958"></a> <span class="p">}</span>
-<a name="line-959"></a>
-<a name="line-960"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">setXmpTagStringSeq</span><span class="p">(</span><span class="s">&quot;Xmp.dc.subject&quot;</span><span class="p">,</span> <span class="n">tagSeq</span><span class="p">);</span>
-<a name="line-961"></a>
-<a name="line-962"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">success</span><span class="p">)</span>
-<a name="line-963"></a> <span class="p">{</span>
-<a name="line-964"></a> <span class="n">returnString</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to save tags to file.&quot;</span><span class="p">);</span>
-<a name="line-965"></a> <span class="p">}</span>
-<a name="line-966"></a> <span class="p">}</span>
-<a name="line-967"></a> <span class="p">}</span>
-<a name="line-968"></a>
-<a name="line-969"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span><span class="p">)</span>
-<a name="line-970"></a> <span class="p">{</span>
-<a name="line-971"></a> <span class="n">success</span> <span class="o">=</span> <span class="n">meta</span><span class="o">-&gt;</span><span class="n">save</span><span class="p">(</span><span class="n">m_url</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">());</span>
-<a name="line-972"></a>
-<a name="line-973"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">success</span><span class="p">)</span>
-<a name="line-974"></a> <span class="p">{</span>
-<a name="line-975"></a> <span class="n">returnString</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Unable to save changes to file&quot;</span><span class="p">);</span>
-<a name="line-976"></a> <span class="p">}</span>
-<a name="line-977"></a> <span class="k">else</span>
-<a name="line-978"></a> <span class="p">{</span>
-<a name="line-979"></a> <span class="n">m_dirty</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-980"></a> <span class="n">m_savedState</span> <span class="o">=</span> <span class="n">m_gpsData</span><span class="p">;</span>
-<a name="line-981"></a> <span class="n">m_tagListDirty</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-982"></a> <span class="n">m_savedTagList</span> <span class="o">=</span> <span class="n">m_tagList</span><span class="p">;</span>
-<a name="line-983"></a> <span class="p">}</span>
-<a name="line-984"></a> <span class="p">}</span>
+<a name="line-945"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-946"></a> <span class="p">{</span>
+<a name="line-947"></a> <span class="n">findAndDeleteSpacersOrNewTags</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">i</span> <span class="o">+</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span> <span class="n">whatShouldRemove</span><span class="p">);</span>
+<a name="line-948"></a>
+<a name="line-949"></a> <span class="k">if</span> <span class="p">(</span><span class="n">whatShouldRemove</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">)</span>
+<a name="line-950"></a> <span class="p">{</span>
+<a name="line-951"></a> <span class="n">QModelIndex</span> <span class="n">newTagIndex</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span> <span class="mi">0</span><span class="p">,</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
+<a name="line-952"></a> <span class="n">deleteTag</span><span class="p">(</span><span class="n">newTagIndex</span><span class="p">);</span>
+<a name="line-953"></a> <span class="n">i</span><span class="o">--</span><span class="p">;</span>
+<a name="line-954"></a> <span class="p">}</span>
+<a name="line-955"></a> <span class="p">}</span>
+<a name="line-956"></a>
+<a name="line-957"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-958"></a> <span class="p">{</span>
+<a name="line-959"></a> <span class="n">findAndDeleteSpacersOrNewTags</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">[</span><span class="n">i</span><span class="p">],</span>
+<a name="line-960"></a> <span class="n">i</span> <span class="o">+</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span>
+<a name="line-961"></a> <span class="n">whatShouldRemove</span><span class="p">);</span>
+<a name="line-962"></a> <span class="p">}</span>
+<a name="line-963"></a><span class="p">}</span>
+<a name="line-964"></a>
+<a name="line-965"></a><span class="cm">/**</span>
+<a name="line-966"></a><span class="cm"> * Deletes all spacers or all new tags.</span>
+<a name="line-967"></a><span class="cm"> * @param currentIndex If whatShouldRemove represents a spacer, the function will remove all spacers below currentIndex.If whatShouldRemove represents a new tag, the function will delete all new tags.</span>
+<a name="line-968"></a><span class="cm"> * @param whatShouldRemove The tag type that should be removed. The options are: spacers or new tags.</span>
+<a name="line-969"></a><span class="cm"> */</span>
+<a name="line-970"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">deleteAllSpacersOrNewTags</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">currentIndex</span><span class="p">,</span> <span class="n">Type</span> <span class="n">whatShouldRemove</span><span class="p">)</span>
+<a name="line-971"></a><span class="p">{</span>
+<a name="line-972"></a> <span class="k">if</span> <span class="p">(</span><span class="n">whatShouldRemove</span> <span class="o">==</span> <span class="n">TypeSpacer</span><span class="p">)</span>
+<a name="line-973"></a> <span class="p">{</span>
+<a name="line-974"></a><span class="cm">/*</span>
+<a name="line-975"></a><span class="cm"> currentIndex.isValid() ? static_cast&lt;TreeBranch*&gt;(currentIndex.internalPointer()) : d-&gt;rootTag;</span>
+<a name="line-976"></a><span class="cm">*/</span>
+<a name="line-977"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">currentBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">);</span>
+<a name="line-978"></a> <span class="n">findAndDeleteSpacersOrNewTags</span><span class="p">(</span><span class="n">currentBranch</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">whatShouldRemove</span><span class="p">);</span>
+<a name="line-979"></a> <span class="p">}</span>
+<a name="line-980"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">whatShouldRemove</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">)</span>
+<a name="line-981"></a> <span class="p">{</span>
+<a name="line-982"></a> <span class="n">findAndDeleteSpacersOrNewTags</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">whatShouldRemove</span><span class="p">);</span>
+<a name="line-983"></a> <span class="p">}</span>
+<a name="line-984"></a><span class="p">}</span>
<a name="line-985"></a>
-<a name="line-986"></a> <span class="k">if</span> <span class="p">(</span><span class="n">returnString</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-987"></a> <span class="p">{</span>
-<a name="line-988"></a> <span class="c1">// mark all changes as not dirty and tell the model:</span>
-<a name="line-989"></a>
-<a name="line-990"></a> <span class="n">emitDataChanged</span><span class="p">();</span>
-<a name="line-991"></a> <span class="p">}</span>
+<a name="line-986"></a><span class="cm">/**</span>
+<a name="line-987"></a><span class="cm"> * NOTE: tagAddressElements contains address tag: Places,Spain,Barcelona</span>
+<a name="line-988"></a><span class="cm"> * readdTag climbs the tree and checks on each level if tagAddressElements[level] is found.</span>
+<a name="line-989"></a><span class="cm"> * if the tag is found, it climbs up the next level</span>
+<a name="line-990"></a><span class="cm"> * else, it recreates the new tag and climbs up that tree.</span>
+<a name="line-991"></a><span class="cm"> */</span>
<a name="line-992"></a>
-<a name="line-993"></a> <span class="k">return</span> <span class="n">returnString</span><span class="p">;</span>
-<a name="line-994"></a><span class="p">}</span>
-<a name="line-995"></a>
-<a name="line-996"></a><span class="cm">/**</span>
-<a name="line-997"></a><span class="cm"> * @brief Restore the gps data to @p container. Sets m_dirty to false if container equals savedState.</span>
-<a name="line-998"></a><span class="cm"> */</span>
-<a name="line-999"></a><span class="kt">void</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">restoreGPSData</span><span class="p">(</span><span class="k">const</span> <span class="n">GPSDataContainer</span><span class="o">&amp;</span> <span class="n">container</span><span class="p">)</span>
-<a name="line-1000"></a><span class="p">{</span>
-<a name="line-1001"></a> <span class="n">m_dirty</span> <span class="o">=</span> <span class="o">!</span><span class="p">(</span><span class="n">container</span> <span class="o">==</span> <span class="n">m_savedState</span><span class="p">);</span>
-<a name="line-1002"></a> <span class="n">m_gpsData</span> <span class="o">=</span> <span class="n">container</span><span class="p">;</span>
-<a name="line-1003"></a> <span class="n">emitDataChanged</span><span class="p">();</span>
-<a name="line-1004"></a><span class="p">}</span>
-<a name="line-1005"></a>
-<a name="line-1006"></a><span class="kt">void</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">restoreRGTagList</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;&amp;</span> <span class="n">tagList</span><span class="p">)</span>
-<a name="line-1007"></a><span class="p">{</span>
-<a name="line-1008"></a> <span class="c1">// TODO: override == operator</span>
+<a name="line-993"></a><span class="cm">/**</span>
+<a name="line-994"></a><span class="cm"> * Readds new tags to tag tree.</span>
+<a name="line-995"></a><span class="cm"> * @param currentBranch The branch from where the scan starts.</span>
+<a name="line-996"></a><span class="cm"> * @param currentRow The row of the currentBranch.</span>
+<a name="line-997"></a><span class="cm"> * @param tagAddressElements A list containing address elements. Example: {Country}, {City}...</span>
+<a name="line-998"></a><span class="cm"> * @param elementsData A list containing the name of each address element found in elements. Example: France, Paris...</span>
+<a name="line-999"></a><span class="cm"> */</span>
+<a name="line-1000"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">readdTag</span><span class="p">(</span><span class="n">TreeBranch</span><span class="o">*&amp;</span> <span class="n">currentBranch</span><span class="p">,</span> <span class="kt">int</span> <span class="n">currentRow</span><span class="p">,</span> <span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="n">tagAddressElements</span><span class="p">,</span> <span class="kt">int</span> <span class="n">currentAddressElementIndex</span><span class="p">)</span>
+<a name="line-1001"></a><span class="p">{</span>
+<a name="line-1002"></a><span class="hll"> <span class="kt">bool</span> <span class="n">found</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span><span class='error2'>&lt;--- Shadowed declaration</span>
+</span><a name="line-1003"></a> <span class="kt">int</span> <span class="n">foundIndex</span><span class="p">;</span>
+<a name="line-1004"></a>
+<a name="line-1005"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentAddressElementIndex</span> <span class="o">&gt;=</span> <span class="n">tagAddressElements</span><span class="p">.</span><span class="n">count</span><span class="p">())</span>
+<a name="line-1006"></a> <span class="p">{</span>
+<a name="line-1007"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-1008"></a> <span class="p">}</span>
<a name="line-1009"></a>
-<a name="line-1010"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tagList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">!=</span> <span class="n">m_savedTagList</span><span class="p">.</span><span class="n">count</span><span class="p">())</span>
+<a name="line-1010"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tagAddressElements</span><span class="p">[</span><span class="n">currentAddressElementIndex</span><span class="p">].</span><span class="n">tagType</span> <span class="o">==</span> <span class="n">TypeSpacer</span><span class="p">)</span>
<a name="line-1011"></a> <span class="p">{</span>
-<a name="line-1012"></a> <span class="n">m_tagListDirty</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-1013"></a> <span class="p">}</span>
-<a name="line-1014"></a> <span class="k">else</span>
-<a name="line-1015"></a> <span class="p">{</span>
-<a name="line-1016"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">tagList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-1017"></a> <span class="p">{</span>
-<a name="line-1018"></a> <span class="kt">bool</span> <span class="n">foundNotEqual</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-1019"></a>
-<a name="line-1020"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tagList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">count</span><span class="p">()</span> <span class="o">!=</span> <span class="n">m_savedTagList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">count</span><span class="p">())</span>
-<a name="line-1021"></a> <span class="p">{</span>
-<a name="line-1022"></a> <span class="n">m_tagListDirty</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-1023"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-1024"></a> <span class="p">}</span>
-<a name="line-1025"></a>
-<a name="line-1026"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">j</span> <span class="o">&lt;</span> <span class="n">tagList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span>
-<a name="line-1027"></a> <span class="p">{</span>
-<a name="line-1028"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tagList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">at</span><span class="p">(</span><span class="n">j</span><span class="p">).</span><span class="n">tagName</span> <span class="o">!=</span> <span class="n">m_savedTagList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">at</span><span class="p">(</span><span class="n">j</span><span class="p">).</span><span class="n">tagName</span><span class="p">)</span>
-<a name="line-1029"></a> <span class="p">{</span>
-<a name="line-1030"></a> <span class="n">foundNotEqual</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-1031"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-1032"></a> <span class="p">}</span>
-<a name="line-1033"></a> <span class="p">}</span>
-<a name="line-1034"></a>
-<a name="line-1035"></a> <span class="k">if</span> <span class="p">(</span><span class="n">foundNotEqual</span><span class="p">)</span>
-<a name="line-1036"></a> <span class="p">{</span>
-<a name="line-1037"></a> <span class="n">m_tagListDirty</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-1038"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-1039"></a> <span class="p">}</span>
-<a name="line-1040"></a> <span class="p">}</span>
-<a name="line-1041"></a> <span class="p">}</span>
-<a name="line-1042"></a>
-<a name="line-1043"></a> <span class="n">m_tagList</span> <span class="o">=</span> <span class="n">tagList</span><span class="p">;</span>
-<a name="line-1044"></a>
-<a name="line-1045"></a> <span class="n">emitDataChanged</span><span class="p">();</span>
-<a name="line-1046"></a><span class="p">}</span>
-<a name="line-1047"></a>
-<a name="line-1048"></a><span class="kt">bool</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">isDirty</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-1049"></a><span class="p">{</span>
-<a name="line-1050"></a> <span class="k">return</span> <span class="n">m_dirty</span><span class="p">;</span>
-<a name="line-1051"></a><span class="p">}</span>
-<a name="line-1052"></a>
-<a name="line-1053"></a><span class="n">QUrl</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">url</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-1054"></a><span class="p">{</span>
-<a name="line-1055"></a> <span class="k">return</span> <span class="n">m_url</span><span class="p">;</span>
-<a name="line-1056"></a><span class="p">}</span>
-<a name="line-1057"></a>
-<a name="line-1058"></a><span class="n">QDateTime</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">dateTime</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-1059"></a><span class="p">{</span>
-<a name="line-1060"></a> <span class="k">return</span> <span class="n">m_dateTime</span><span class="p">;</span>
-<a name="line-1061"></a><span class="p">}</span>
-<a name="line-1062"></a>
-<a name="line-1063"></a><span class="n">GeoCoordinates</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">coordinates</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-1064"></a><span class="p">{</span>
-<a name="line-1065"></a> <span class="k">return</span> <span class="n">m_gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">();</span>
-<a name="line-1066"></a><span class="p">}</span>
-<a name="line-1067"></a>
-<a name="line-1068"></a><span class="n">GPSDataContainer</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">gpsData</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-1069"></a><span class="p">{</span>
-<a name="line-1070"></a> <span class="k">return</span> <span class="n">m_gpsData</span><span class="p">;</span>
-<a name="line-1071"></a><span class="p">}</span>
-<a name="line-1072"></a>
-<a name="line-1073"></a><span class="kt">void</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">setGPSData</span><span class="p">(</span><span class="k">const</span> <span class="n">GPSDataContainer</span><span class="o">&amp;</span> <span class="n">container</span><span class="p">)</span>
-<a name="line-1074"></a><span class="p">{</span>
-<a name="line-1075"></a> <span class="n">m_gpsData</span> <span class="o">=</span> <span class="n">container</span><span class="p">;</span>
-<a name="line-1076"></a> <span class="n">m_dirty</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-1077"></a>
-<a name="line-1078"></a> <span class="n">emitDataChanged</span><span class="p">();</span>
-<a name="line-1079"></a><span class="p">}</span>
-<a name="line-1080"></a>
-<a name="line-1081"></a><span class="kt">void</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">setTagList</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;&amp;</span> <span class="n">externalTagList</span><span class="p">)</span>
-<a name="line-1082"></a><span class="p">{</span>
-<a name="line-1083"></a> <span class="n">m_tagList</span> <span class="o">=</span> <span class="n">externalTagList</span><span class="p">;</span>
-<a name="line-1084"></a> <span class="n">m_tagListDirty</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-1085"></a>
-<a name="line-1086"></a> <span class="n">emitDataChanged</span><span class="p">();</span>
-<a name="line-1087"></a><span class="p">}</span>
+<a name="line-1012"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-1013"></a> <span class="p">{</span>
+<a name="line-1014"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">data</span> <span class="o">==</span> <span class="n">tagAddressElements</span><span class="p">[</span><span class="n">currentAddressElementIndex</span><span class="p">].</span><span class="n">tagName</span><span class="p">)</span>
+<a name="line-1015"></a> <span class="p">{</span>
+<a name="line-1016"></a> <span class="n">found</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-1017"></a> <span class="n">foundIndex</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
+<a name="line-1018"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-1019"></a> <span class="p">}</span>
+<a name="line-1020"></a> <span class="p">}</span>
+<a name="line-1021"></a>
+<a name="line-1022"></a> <span class="k">if</span> <span class="p">(</span><span class="n">found</span><span class="p">)</span>
+<a name="line-1023"></a> <span class="p">{</span>
+<a name="line-1024"></a> <span class="n">readdTag</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">foundIndex</span><span class="p">],</span> <span class="n">foundIndex</span><span class="p">,</span> <span class="n">tagAddressElements</span><span class="p">,</span> <span class="n">currentAddressElementIndex</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span>
+<a name="line-1025"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-1026"></a> <span class="p">}</span>
+<a name="line-1027"></a> <span class="k">else</span>
+<a name="line-1028"></a> <span class="p">{</span>
+<a name="line-1029"></a> <span class="c1">// recreates the spacer</span>
+<a name="line-1030"></a>
+<a name="line-1031"></a> <span class="n">QModelIndex</span> <span class="n">currentIndex</span><span class="p">;</span>
+<a name="line-1032"></a>
+<a name="line-1033"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">)</span>
+<a name="line-1034"></a> <span class="p">{</span>
+<a name="line-1035"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-1036"></a> <span class="p">}</span>
+<a name="line-1037"></a> <span class="k">else</span>
+<a name="line-1038"></a> <span class="p">{</span>
+<a name="line-1039"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">currentRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">currentBranch</span><span class="p">);</span>
+<a name="line-1040"></a> <span class="p">}</span>
+<a name="line-1041"></a>
+<a name="line-1042"></a> <span class="n">addSpacerTag</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">,</span><span class="n">tagAddressElements</span><span class="p">[</span><span class="n">currentAddressElementIndex</span><span class="p">].</span><span class="n">tagName</span><span class="p">);</span>
+<a name="line-1043"></a>
+<a name="line-1044"></a> <span class="k">if</span> <span class="p">(</span> <span class="p">(</span><span class="n">tagAddressElements</span><span class="p">.</span><span class="n">count</span><span class="p">()</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">currentAddressElementIndex</span><span class="p">)</span>
+<a name="line-1045"></a> <span class="p">{</span>
+<a name="line-1046"></a> <span class="n">readdTag</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span>
+<a name="line-1047"></a> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span>
+<a name="line-1048"></a> <span class="n">tagAddressElements</span><span class="p">,</span>
+<a name="line-1049"></a> <span class="n">currentAddressElementIndex</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span>
+<a name="line-1050"></a> <span class="p">}</span>
+<a name="line-1051"></a>
+<a name="line-1052"></a> <span class="p">}</span>
+<a name="line-1053"></a>
+<a name="line-1054"></a> <span class="p">}</span>
+<a name="line-1055"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">tagAddressElements</span><span class="p">[</span><span class="n">currentAddressElementIndex</span><span class="p">].</span><span class="n">tagType</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">)</span>
+<a name="line-1056"></a> <span class="p">{</span>
+<a name="line-1057"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-1058"></a> <span class="p">{</span>
+<a name="line-1059"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">data</span> <span class="o">==</span> <span class="n">tagAddressElements</span><span class="p">[</span><span class="n">currentAddressElementIndex</span><span class="p">].</span><span class="n">tagName</span><span class="p">)</span>
+<a name="line-1060"></a> <span class="p">{</span>
+<a name="line-1061"></a> <span class="n">found</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-1062"></a> <span class="n">foundIndex</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
+<a name="line-1063"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-1064"></a> <span class="p">}</span>
+<a name="line-1065"></a> <span class="p">}</span>
+<a name="line-1066"></a>
+<a name="line-1067"></a> <span class="k">if</span> <span class="p">(</span><span class="n">found</span><span class="p">)</span>
+<a name="line-1068"></a> <span class="p">{</span>
+<a name="line-1069"></a> <span class="n">readdTag</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">foundIndex</span><span class="p">],</span>
+<a name="line-1070"></a> <span class="n">foundIndex</span> <span class="o">+</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span>
+<a name="line-1071"></a> <span class="n">tagAddressElements</span><span class="p">,</span>
+<a name="line-1072"></a> <span class="n">currentAddressElementIndex</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-1073"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-1074"></a> <span class="p">}</span>
+<a name="line-1075"></a>
+<a name="line-1076"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">found</span><span class="p">)</span>
+<a name="line-1077"></a> <span class="p">{</span>
+<a name="line-1078"></a> <span class="n">QModelIndex</span> <span class="n">currentIndex</span><span class="p">;</span>
+<a name="line-1079"></a>
+<a name="line-1080"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">)</span>
+<a name="line-1081"></a> <span class="p">{</span>
+<a name="line-1082"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-1083"></a> <span class="p">}</span>
+<a name="line-1084"></a> <span class="k">else</span>
+<a name="line-1085"></a> <span class="p">{</span>
+<a name="line-1086"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">currentRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">currentBranch</span><span class="p">);</span>
+<a name="line-1087"></a> <span class="p">}</span>
<a name="line-1088"></a>
-<a name="line-1089"></a><span class="kt">bool</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">isTagListDirty</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-1090"></a><span class="p">{</span>
-<a name="line-1091"></a> <span class="k">return</span> <span class="n">m_tagListDirty</span><span class="p">;</span>
-<a name="line-1092"></a><span class="p">}</span>
-<a name="line-1093"></a>
-<a name="line-1094"></a><span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">getTagList</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-1095"></a><span class="p">{</span>
-<a name="line-1096"></a> <span class="k">return</span> <span class="n">m_tagList</span><span class="p">;</span>
-<a name="line-1097"></a><span class="p">}</span>
-<a name="line-1098"></a>
-<a name="line-1099"></a><span class="p">}</span> <span class="c1">// namespace Digikam</span>
+<a name="line-1089"></a> <span class="n">addNewTag</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">,</span> <span class="n">tagAddressElements</span><span class="p">[</span><span class="n">currentAddressElementIndex</span><span class="p">].</span><span class="n">tagName</span><span class="p">,</span>
+<a name="line-1090"></a> <span class="n">tagAddressElements</span><span class="p">[</span><span class="n">currentAddressElementIndex</span><span class="p">].</span><span class="n">tipName</span><span class="p">);</span>
+<a name="line-1091"></a>
+<a name="line-1092"></a> <span class="k">if</span> <span class="p">((</span><span class="n">tagAddressElements</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">currentAddressElementIndex</span><span class="p">)</span>
+<a name="line-1093"></a> <span class="p">{</span>
+<a name="line-1094"></a> <span class="n">readdTag</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">],</span>
+<a name="line-1095"></a> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span>
+<a name="line-1096"></a> <span class="n">tagAddressElements</span><span class="p">,</span>
+<a name="line-1097"></a> <span class="n">currentAddressElementIndex</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-1098"></a> <span class="p">}</span>
+<a name="line-1099"></a> <span class="p">}</span>
+<a name="line-1100"></a> <span class="p">}</span>
+<a name="line-1101"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">tagAddressElements</span><span class="p">[</span><span class="n">currentAddressElementIndex</span><span class="p">].</span><span class="n">tagType</span> <span class="o">==</span> <span class="n">TypeChild</span><span class="p">)</span>
+<a name="line-1102"></a> <span class="p">{</span>
+<a name="line-1103"></a><span class="hll"> <span class="kt">bool</span> <span class="n">found</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-1104"></a>
+<a name="line-1105"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-1106"></a> <span class="p">{</span>
+<a name="line-1107"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">data</span> <span class="o">==</span> <span class="n">tagAddressElements</span><span class="p">[</span><span class="n">currentAddressElementIndex</span><span class="p">].</span><span class="n">tagName</span><span class="p">)</span>
+<a name="line-1108"></a> <span class="p">{</span>
+<a name="line-1109"></a> <span class="n">found</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-1110"></a> <span class="n">foundIndex</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
+<a name="line-1111"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-1112"></a> <span class="p">}</span>
+<a name="line-1113"></a> <span class="p">}</span>
+<a name="line-1114"></a>
+<a name="line-1115"></a> <span class="k">if</span> <span class="p">(</span><span class="n">found</span><span class="p">)</span>
+<a name="line-1116"></a> <span class="p">{</span>
+<a name="line-1117"></a> <span class="n">readdTag</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">[</span><span class="n">foundIndex</span><span class="p">],</span>
+<a name="line-1118"></a> <span class="n">foundIndex</span><span class="o">+</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span>
+<a name="line-1119"></a> <span class="n">tagAddressElements</span><span class="p">,</span> <span class="n">currentAddressElementIndex</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-1120"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-1121"></a> <span class="p">}</span>
+<a name="line-1122"></a> <span class="k">else</span>
+<a name="line-1123"></a> <span class="p">{</span>
+<a name="line-1124"></a> <span class="n">QModelIndex</span> <span class="n">currentIndex</span><span class="p">;</span>
+<a name="line-1125"></a>
+<a name="line-1126"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">)</span>
+<a name="line-1127"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-1128"></a> <span class="k">else</span>
+<a name="line-1129"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">currentRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">currentBranch</span><span class="p">);</span>
+<a name="line-1130"></a>
+<a name="line-1131"></a> <span class="n">addSpacerTag</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">,</span><span class="n">tagAddressElements</span><span class="p">[</span><span class="n">currentAddressElementIndex</span><span class="p">].</span><span class="n">tagName</span><span class="p">);</span>
+<a name="line-1132"></a>
+<a name="line-1133"></a> <span class="k">if</span> <span class="p">(</span> <span class="p">(</span><span class="n">tagAddressElements</span><span class="p">.</span><span class="n">count</span><span class="p">()</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">currentAddressElementIndex</span><span class="p">)</span>
+<a name="line-1134"></a> <span class="p">{</span>
+<a name="line-1135"></a> <span class="n">readdTag</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span>
+<a name="line-1136"></a> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span>
+<a name="line-1137"></a> <span class="n">tagAddressElements</span><span class="p">,</span>
+<a name="line-1138"></a> <span class="n">currentAddressElementIndex</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span>
+<a name="line-1139"></a> <span class="p">}</span>
+<a name="line-1140"></a> <span class="p">}</span>
+<a name="line-1141"></a> <span class="p">}</span>
+<a name="line-1142"></a><span class="p">}</span>
+<a name="line-1143"></a>
+<a name="line-1144"></a><span class="cm">/**</span>
+<a name="line-1145"></a><span class="cm"> * Takes each tag contained in tagAddressList and adds it to the tag tree.</span>
+<a name="line-1146"></a><span class="cm"> * @param tagAddressList A list containing new tags.</span>
+<a name="line-1147"></a><span class="cm"> */</span>
+<a name="line-1148"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">readdNewTags</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;&amp;</span> <span class="n">tagAddressList</span><span class="p">)</span>
+<a name="line-1149"></a><span class="p">{</span>
+<a name="line-1150"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">tagAddressList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-1151"></a> <span class="p">{</span>
+<a name="line-1152"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="n">currentAddressTag</span> <span class="o">=</span> <span class="n">tagAddressList</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+<a name="line-1153"></a> <span class="n">readdTag</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">currentAddressTag</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-1154"></a> <span class="p">}</span>
+<a name="line-1155"></a><span class="p">}</span>
+<a name="line-1156"></a>
+<a name="line-1157"></a><span class="cm">/**</span>
+<a name="line-1158"></a><span class="cm"> * Gets the address of a spacer. Address means the path from rootTag to currentBranch</span>
+<a name="line-1159"></a><span class="cm"> * @param currentBranch The branch where the scan stops.</span>
+<a name="line-1160"></a><span class="cm"> * @return The tag address of currentBranch</span>
+<a name="line-1161"></a><span class="cm"> */</span>
+<a name="line-1162"></a><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">getSpacerAddress</span><span class="p">(</span><span class="n">TreeBranch</span><span class="o">*</span> <span class="n">currentBranch</span><span class="p">)</span>
+<a name="line-1163"></a><span class="p">{</span>
+<a name="line-1164"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="n">spacerAddress</span><span class="p">;</span>
+<a name="line-1165"></a>
+<a name="line-1166"></a> <span class="k">while</span> <span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">!=</span> <span class="k">nullptr</span><span class="p">)</span>
+<a name="line-1167"></a> <span class="p">{</span>
+<a name="line-1168"></a> <span class="n">TagData</span> <span class="n">currentTag</span><span class="p">;</span>
+<a name="line-1169"></a> <span class="n">currentTag</span><span class="p">.</span><span class="n">tagName</span> <span class="o">=</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">;</span>
+<a name="line-1170"></a> <span class="n">currentTag</span><span class="p">.</span><span class="n">tagType</span> <span class="o">=</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">type</span><span class="p">;</span>
+<a name="line-1171"></a>
+<a name="line-1172"></a> <span class="n">spacerAddress</span><span class="p">.</span><span class="n">prepend</span><span class="p">(</span><span class="n">currentTag</span><span class="p">);</span>
+<a name="line-1173"></a> <span class="n">currentBranch</span> <span class="o">=</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">;</span>
+<a name="line-1174"></a> <span class="p">}</span>
+<a name="line-1175"></a>
+<a name="line-1176"></a> <span class="k">return</span> <span class="n">spacerAddress</span><span class="p">;</span>
+<a name="line-1177"></a><span class="p">}</span>
+<a name="line-1178"></a>
+<a name="line-1179"></a><span class="cm">/**</span>
+<a name="line-1180"></a><span class="cm"> * Gets the spacers addresses below currentBranch. Address means the path from rootTag to currentBranch.</span>
+<a name="line-1181"></a><span class="cm"> * @param currentBranch The branch from where the search starts.</span>
+<a name="line-1182"></a><span class="cm"> */</span>
+<a name="line-1183"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">climbTreeAndGetSpacers</span><span class="p">(</span><span class="k">const</span> <span class="n">TreeBranch</span><span class="o">*</span> <span class="n">currentBranch</span><span class="p">)</span>
+<a name="line-1184"></a><span class="p">{</span>
+<a name="line-1185"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-1186"></a> <span class="p">{</span>
+<a name="line-1187"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="n">currentSpacerAddress</span><span class="p">;</span>
+<a name="line-1188"></a> <span class="n">currentSpacerAddress</span> <span class="o">=</span> <span class="n">getSpacerAddress</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
+<a name="line-1189"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">savedSpacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentSpacerAddress</span><span class="p">);</span>
+<a name="line-1190"></a> <span class="n">climbTreeAndGetSpacers</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
+<a name="line-1191"></a> <span class="p">}</span>
+<a name="line-1192"></a>
+<a name="line-1193"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-1194"></a> <span class="p">{</span>
+<a name="line-1195"></a> <span class="n">climbTreeAndGetSpacers</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
+<a name="line-1196"></a> <span class="p">}</span>
+<a name="line-1197"></a>
+<a name="line-1198"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-1199"></a> <span class="p">{</span>
+<a name="line-1200"></a> <span class="n">climbTreeAndGetSpacers</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
+<a name="line-1201"></a> <span class="p">}</span>
+<a name="line-1202"></a><span class="p">}</span>
+<a name="line-1203"></a>
+<a name="line-1204"></a><span class="cm">/**</span>
+<a name="line-1205"></a><span class="cm"> * Gets all spacers.</span>
+<a name="line-1206"></a><span class="cm"> * @return The spacer list.</span>
+<a name="line-1207"></a><span class="cm"> */</span>
+<a name="line-1208"></a><span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">getSpacers</span><span class="p">()</span>
+<a name="line-1209"></a><span class="p">{</span>
+<a name="line-1210"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">savedSpacerList</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
+<a name="line-1211"></a> <span class="n">climbTreeAndGetSpacers</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">);</span>
+<a name="line-1212"></a>
+<a name="line-1213"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">savedSpacerList</span><span class="p">;</span>
+<a name="line-1214"></a><span class="p">}</span>
+<a name="line-1215"></a>
+<a name="line-1216"></a><span class="cm">/**</span>
+<a name="line-1217"></a><span class="cm"> * Add tags from host application to the tag tree.</span>
+<a name="line-1218"></a><span class="cm"> * @param parentBranch The branch that will be parent for the old tag.</span>
+<a name="line-1219"></a><span class="cm"> * @param currentRow The row where this external tag will be added.</span>
+<a name="line-1220"></a><span class="cm"> */</span>
+<a name="line-1221"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">addExternalTags</span><span class="p">(</span><span class="n">TreeBranch</span><span class="o">*</span> <span class="n">parentBranch</span><span class="p">,</span> <span class="kt">int</span> <span class="n">currentRow</span><span class="p">)</span>
+<a name="line-1222"></a><span class="p">{</span>
+<a name="line-1223"></a> <span class="n">QModelIndex</span> <span class="n">parentIndex</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">currentRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">parentBranch</span><span class="p">);</span>
+<a name="line-1224"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">howManyRows</span> <span class="o">=</span> <span class="n">rowCount</span><span class="p">(</span><span class="n">parentIndex</span><span class="p">);</span>
+<a name="line-1225"></a>
+<a name="line-1226"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">howManyRows</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-1227"></a> <span class="p">{</span>
+<a name="line-1228"></a> <span class="n">QModelIndex</span> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">index</span><span class="p">(</span><span class="n">i</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="n">parentIndex</span><span class="p">);</span>
+<a name="line-1229"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">currentBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">);</span> <span class="c1">//currentIndex.isValid() ? static_cast&lt;TreeBranch*&gt;(currentIndex.internalPointer()) : d-&gt;rootTag;</span>
+<a name="line-1230"></a>
+<a name="line-1231"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">)</span>
+<a name="line-1232"></a> <span class="p">{</span>
+<a name="line-1233"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-1234"></a> <span class="p">}</span>
+<a name="line-1235"></a>
+<a name="line-1236"></a> <span class="n">addExternalTags</span><span class="p">(</span><span class="n">currentBranch</span><span class="p">,</span><span class="n">i</span><span class="p">);</span>
+<a name="line-1237"></a> <span class="p">}</span>
+<a name="line-1238"></a><span class="p">}</span>
+<a name="line-1239"></a>
+<a name="line-1240"></a><span class="cm">/**</span>
+<a name="line-1241"></a><span class="cm"> * Add all external tags to the tag tree.</span>
+<a name="line-1242"></a><span class="cm"> */</span>
+<a name="line-1243"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">addAllExternalTagsToTreeView</span><span class="p">()</span>
+<a name="line-1244"></a><span class="p">{</span>
+<a name="line-1245"></a> <span class="n">addExternalTags</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">,</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-1246"></a><span class="p">}</span>
+<a name="line-1247"></a>
+<a name="line-1248"></a><span class="cm">/**</span>
+<a name="line-1249"></a><span class="cm"> * Adds all spacers found in spacerList to the tag tree.</span>
+<a name="line-1250"></a><span class="cm"> */</span>
+<a name="line-1251"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">addAllSpacersToTag</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">currentIndex</span><span class="p">,</span> <span class="k">const</span> <span class="n">QStringList</span> <span class="n">spacerList</span><span class="p">,</span> <span class="kt">int</span> <span class="n">spacerListIndex</span><span class="p">)</span>
+<a name="line-1252"></a><span class="p">{</span>
+<a name="line-1253"></a> <span class="k">if</span> <span class="p">(</span><span class="n">spacerListIndex</span> <span class="o">&gt;=</span> <span class="n">spacerList</span><span class="p">.</span><span class="n">count</span><span class="p">())</span>
+<a name="line-1254"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-1255"></a>
+<a name="line-1256"></a><span class="cm">/*</span>
+<a name="line-1257"></a><span class="cm"> currentIndex.isValid() ? static_cast&lt;TreeBranch*&gt;(currentIndex.internalPointer()) : d-&gt;rootTag;</span>
+<a name="line-1258"></a><span class="cm">*/</span>
+<a name="line-1259"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">currentBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">);</span>
+<a name="line-1260"></a>
+<a name="line-1261"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-1262"></a> <span class="p">{</span>
+<a name="line-1263"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">data</span> <span class="o">==</span> <span class="n">spacerList</span><span class="p">[</span><span class="n">spacerListIndex</span><span class="p">])</span>
+<a name="line-1264"></a> <span class="p">{</span>
+<a name="line-1265"></a> <span class="n">QModelIndex</span> <span class="n">foundIndex</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
+<a name="line-1266"></a> <span class="n">addAllSpacersToTag</span><span class="p">(</span><span class="n">foundIndex</span><span class="p">,</span> <span class="n">spacerList</span><span class="p">,</span> <span class="n">spacerListIndex</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-1267"></a>
+<a name="line-1268"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-1269"></a> <span class="p">}</span>
+<a name="line-1270"></a> <span class="p">}</span>
+<a name="line-1271"></a>
+<a name="line-1272"></a> <span class="n">addSpacerTag</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">,</span> <span class="n">spacerList</span><span class="p">[</span><span class="n">spacerListIndex</span><span class="p">]);</span>
+<a name="line-1273"></a> <span class="n">QModelIndex</span> <span class="n">newIndex</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span>
+<a name="line-1274"></a> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]);</span>
+<a name="line-1275"></a> <span class="n">addAllSpacersToTag</span><span class="p">(</span><span class="n">newIndex</span><span class="p">,</span> <span class="n">spacerList</span><span class="p">,</span> <span class="n">spacerListIndex</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-1276"></a><span class="p">}</span>
+<a name="line-1277"></a>
+<a name="line-1278"></a><span class="cm">/**</span>
+<a name="line-1279"></a><span class="cm"> * Gets the type of a tag found at index.</span>
+<a name="line-1280"></a><span class="cm"> * @param index The index of the tag.</span>
+<a name="line-1281"></a><span class="cm"> * @return The type of the tag found at index.</span>
+<a name="line-1282"></a><span class="cm"> */</span>
+<a name="line-1283"></a><span class="n">Type</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">getTagType</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">index</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-1284"></a><span class="p">{</span>
+<a name="line-1285"></a><span class="cm">/*</span>
+<a name="line-1286"></a><span class="cm"> index.isValid() ? static_cast&lt;TreeBranch*&gt;(index.internalPointer()) : d-&gt;rootTag;</span>
+<a name="line-1287"></a><span class="cm">*/</span>
+<a name="line-1288"></a> <span class="k">const</span> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">treeBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+<a name="line-1289"></a>
+<a name="line-1290"></a> <span class="k">return</span> <span class="n">treeBranch</span><span class="o">-&gt;</span><span class="n">type</span><span class="p">;</span>
+<a name="line-1291"></a><span class="p">}</span>
+<a name="line-1292"></a>
+<a name="line-1293"></a><span class="p">}</span> <span class="c1">// namespace Digikam</span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/21.html b/static/reports/cppcheck/master/21.html
index 6e7e3d1f3..032e401ff 100644
--- a/static/reports/cppcheck/master/21.html
+++ b/static/reports/cppcheck/master/21.html
@@ -1,2731 +1,2325 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/utilities/geolocation/geoiface/reversegeocoding/rgtagmodel.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/utilities/geolocation/mapsearches/gpsmarkertiler.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> rgtagmodel.cpp</p>
-<a href='21.html#line-1002'> shadowVar 1002</a><a href='21.html#line-1103'> shadowVar 1103</a>
+ <p id="filename"><a href="index.html">Defects:</a> gpsmarkertiler.cpp</p>
+<a href='21.html#line-311'> shadowVar 311</a><a href='21.html#line-315'> shadowVar 315</a>
</div>
<div id="content">
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
-1090
-1091
-1092
-1093
-1094
-1095
-1096
-1097
-1098
-1099
-1100
-1101
-1102
-1103
-1104
-1105
-1106
-1107
-1108
-1109
-1110
-1111
-1112
-1113
-1114
-1115
-1116
-1117
-1118
-1119
-1120
-1121
-1122
-1123
-1124
-1125
-1126
-1127
-1128
-1129
-1130
-1131
-1132
-1133
-1134
-1135
-1136
-1137
-1138
-1139
-1140
-1141
-1142
-1143
-1144
-1145
-1146
-1147
-1148
-1149
-1150
-1151
-1152
-1153
-1154
-1155
-1156
-1157
-1158
-1159
-1160
-1161
-1162
-1163
-1164
-1165
-1166
-1167
-1168
-1169
-1170
-1171
-1172
-1173
-1174
-1175
-1176
-1177
-1178
-1179
-1180
-1181
-1182
-1183
-1184
-1185
-1186
-1187
-1188
-1189
-1190
-1191
-1192
-1193
-1194
-1195
-1196
-1197
-1198
-1199
-1200
-1201
-1202
-1203
-1204
-1205
-1206
-1207
-1208
-1209
-1210
-1211
-1212
-1213
-1214
-1215
-1216
-1217
-1218
-1219
-1220
-1221
-1222
-1223
-1224
-1225
-1226
-1227
-1228
-1229
-1230
-1231
-1232
-1233
-1234
-1235
-1236
-1237
-1238
-1239
-1240
-1241
-1242
-1243
-1244
-1245
-1246
-1247
-1248
-1249
-1250
-1251
-1252
-1253
-1254
-1255
-1256
-1257
-1258
-1259
-1260
-1261
-1262
-1263
-1264
-1265
-1266
-1267
-1268
-1269
-1270
-1271
-1272
-1273
-1274
-1275
-1276
-1277
-1278
-1279
-1280
-1281
-1282
-1283
-1284
-1285
-1286
-1287
-1288
-1289
-1290
-1291
-1292
-1293</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
+1090</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
-<a name="line-6"></a><span class="cm"> * Date : 2010-05-12</span>
-<a name="line-7"></a><span class="cm"> * Description : A model to hold information about image tags.</span>
+<a name="line-6"></a><span class="cm"> * Date : 2010-07-20</span>
+<a name="line-7"></a><span class="cm"> * Description : GPS search marker tiler</span>
<a name="line-8"></a><span class="cm"> *</span>
-<a name="line-9"></a><span class="cm"> * Copyright (C) 2010 by Michael G. Hansen &lt;mike at mghansen dot de&gt;</span>
-<a name="line-10"></a><span class="cm"> * Copyright (C) 2010 by Gabriel Voicu &lt;ping dot gabi at gmail dot com&gt;</span>
-<a name="line-11"></a><span class="cm"> *</span>
-<a name="line-12"></a><span class="cm"> * This program is free software; you can redistribute it</span>
-<a name="line-13"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
-<a name="line-14"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
-<a name="line-15"></a><span class="cm"> * either version 2, or (at your option)</span>
-<a name="line-16"></a><span class="cm"> * any later version.</span>
-<a name="line-17"></a><span class="cm"> *</span>
-<a name="line-18"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
-<a name="line-19"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
-<a name="line-20"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
-<a name="line-21"></a><span class="cm"> * GNU General Public License for more details.</span>
-<a name="line-22"></a><span class="cm"> *</span>
-<a name="line-23"></a><span class="cm"> * ============================================================ */</span>
-<a name="line-24"></a>
-<a name="line-25"></a><span class="cp">#include</span> <span class="cpf">&quot;rgtagmodel.h&quot;</span><span class="cp"></span>
+<a name="line-9"></a><span class="cm"> * Copyright (C) 2010 by Marcel Wiesweg &lt;marcel dot wiesweg at gmx dot de&gt;</span>
+<a name="line-10"></a><span class="cm"> * Copyright (C) 2010 by Gabriel Voicu &lt;ping dot gabi at gmail dot com&gt;</span>
+<a name="line-11"></a><span class="cm"> * Copyright (C) 2010-2011 by Michael G. Hansen &lt;mike at mghansen dot de&gt;</span>
+<a name="line-12"></a><span class="cm"> * Copyright (C) 2015 by Mohamed_Anwer &lt;m_dot_anwer at gmx dot com&gt;</span>
+<a name="line-13"></a><span class="cm"> *</span>
+<a name="line-14"></a><span class="cm"> * This program is free software; you can redistribute it</span>
+<a name="line-15"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
+<a name="line-16"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
+<a name="line-17"></a><span class="cm"> * either version 2, or (at your option)</span>
+<a name="line-18"></a><span class="cm"> * any later version.</span>
+<a name="line-19"></a><span class="cm"> *</span>
+<a name="line-20"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
+<a name="line-21"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
+<a name="line-22"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
+<a name="line-23"></a><span class="cm"> * GNU General Public License for more details.</span>
+<a name="line-24"></a><span class="cm"> *</span>
+<a name="line-25"></a><span class="cm"> * ============================================================ */</span>
<a name="line-26"></a>
-<a name="line-27"></a><span class="c1">// Qt includes</span>
+<a name="line-27"></a><span class="cp">#include</span> <span class="cpf">&quot;gpsmarkertiler.h&quot;</span><span class="cp"></span>
<a name="line-28"></a>
-<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QColor&gt;</span><span class="cp"></span>
+<a name="line-29"></a><span class="c1">// Qt includes</span>
<a name="line-30"></a>
-<a name="line-31"></a><span class="c1">// KDE includes</span>
-<a name="line-32"></a>
-<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
+<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QPair&gt;</span><span class="cp"></span>
+<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QRectF&gt;</span><span class="cp"></span>
+<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QTimer&gt;</span><span class="cp"></span>
<a name="line-34"></a>
-<a name="line-35"></a><span class="k">namespace</span> <span class="n">Digikam</span>
-<a name="line-36"></a><span class="p">{</span>
-<a name="line-37"></a>
-<a name="line-38"></a><span class="cm">/**</span>
-<a name="line-39"></a><span class="cm"> * @class RGTagModel</span>
-<a name="line-40"></a><span class="cm"> *</span>
-<a name="line-41"></a><span class="cm"> * @brief The model that holds data for the tag tree displayed in ReverseGeocodingWidget</span>
-<a name="line-42"></a><span class="cm"> *</span>
-<a name="line-43"></a><span class="cm"> * The RGTagModel class is a wrapper above QAbstractItemModel. It helds data for the tag tree displayed in ReverseGeocodingWidget.</span>
-<a name="line-44"></a><span class="cm"> * The model gets the data from the tag model of host application and displays it in a QTreeView.</span>
-<a name="line-45"></a><span class="cm"> * It stores three type of tags: old tags (the tags that belong to the host&#39;s tag model), spacer tags (tags representing address elements</span>
-<a name="line-46"></a><span class="cm"> * or custom tags) and new tags (tags containing data retrieved from backend).</span>
-<a name="line-47"></a><span class="cm"> */</span>
-<a name="line-48"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">Private</span>
-<a name="line-49"></a><span class="p">{</span>
-<a name="line-50"></a><span class="k">public</span><span class="o">:</span>
+<a name="line-35"></a><span class="c1">// Local includes</span>
+<a name="line-36"></a>
+<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&quot;groupstatecomputer.h&quot;</span><span class="cp"></span>
+<a name="line-38"></a>
+<a name="line-39"></a><span class="c1">// Local includes</span>
+<a name="line-40"></a>
+<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&quot;gpsiteminfosorter.h&quot;</span><span class="cp"></span>
+<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&quot;dnotificationwrapper.h&quot;</span><span class="cp"></span>
+<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&quot;digikamapp.h&quot;</span><span class="cp"></span>
+<a name="line-44"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
+<a name="line-45"></a><span class="cp">#include</span> <span class="cpf">&quot;dbjobsmanager.h&quot;</span><span class="cp"></span>
+<a name="line-46"></a>
+<a name="line-47"></a><span class="c1">/// @todo Actually use this definition!</span>
+<a name="line-48"></a><span class="k">typedef</span> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">Digikam</span><span class="o">::</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">MapPair</span><span class="p">;</span>
+<a name="line-49"></a>
+<a name="line-50"></a><span class="n">Q_DECLARE_METATYPE</span><span class="p">(</span><span class="n">MapPair</span><span class="p">)</span>
<a name="line-51"></a>
-<a name="line-52"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
-<a name="line-53"></a> <span class="o">:</span> <span class="n">tagModel</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-54"></a> <span class="n">rootTag</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-55"></a> <span class="n">startInsert</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span>
-<a name="line-56"></a> <span class="n">endInsert</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="line-57"></a> <span class="p">{</span>
-<a name="line-58"></a> <span class="p">}</span>
-<a name="line-59"></a>
-<a name="line-60"></a><span class="k">public</span><span class="o">:</span>
-<a name="line-61"></a>
-<a name="line-62"></a> <span class="n">QAbstractItemModel</span><span class="o">*</span> <span class="n">tagModel</span><span class="p">;</span>
-<a name="line-63"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="n">rootTag</span><span class="p">;</span>
+<a name="line-52"></a><span class="k">namespace</span> <span class="n">Digikam</span>
+<a name="line-53"></a><span class="p">{</span>
+<a name="line-54"></a>
+<a name="line-55"></a><span class="cm">/**</span>
+<a name="line-56"></a><span class="cm"> * @class GPSMarkerTiler</span>
+<a name="line-57"></a><span class="cm"> *</span>
+<a name="line-58"></a><span class="cm"> * @brief Marker model for storing data needed to display markers on the map. The data is retrieved from Digikam&#39;s database.</span>
+<a name="line-59"></a><span class="cm"> */</span>
+<a name="line-60"></a>
+<a name="line-61"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="nl">MyTile</span> <span class="p">:</span> <span class="k">public</span> <span class="n">Tile</span>
+<a name="line-62"></a><span class="p">{</span>
+<a name="line-63"></a><span class="k">public</span><span class="o">:</span>
<a name="line-64"></a>
-<a name="line-65"></a> <span class="n">QModelIndex</span> <span class="n">parent</span><span class="p">;</span>
-<a name="line-66"></a> <span class="kt">int</span> <span class="n">startInsert</span><span class="p">;</span>
-<a name="line-67"></a> <span class="kt">int</span> <span class="n">endInsert</span><span class="p">;</span>
-<a name="line-68"></a>
-<a name="line-69"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">newTags</span><span class="p">;</span>
-<a name="line-70"></a>
-<a name="line-71"></a> <span class="n">QStringList</span> <span class="n">auxTagList</span><span class="p">;</span>
-<a name="line-72"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">Type</span><span class="o">&gt;</span> <span class="n">auxTagTypeList</span><span class="p">;</span>
-<a name="line-73"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QPersistentModelIndex</span><span class="o">&gt;</span> <span class="n">auxIndexList</span><span class="p">;</span>
-<a name="line-74"></a>
-<a name="line-75"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">savedSpacerList</span><span class="p">;</span>
-<a name="line-76"></a><span class="p">};</span>
-<a name="line-77"></a>
-<a name="line-78"></a><span class="cm">/**</span>
-<a name="line-79"></a><span class="cm"> * Constructor</span>
-<a name="line-80"></a><span class="cm"> * @param externalTagModel The tag model found in the host application.</span>
-<a name="line-81"></a><span class="cm"> * @param parent The parent object</span>
-<a name="line-82"></a><span class="cm"> */</span>
-<a name="line-83"></a><span class="n">RGTagModel</span><span class="o">::</span><span class="n">RGTagModel</span><span class="p">(</span><span class="n">QAbstractItemModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">externalTagModel</span><span class="p">,</span> <span class="n">QObject</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span><span class="p">)</span>
-<a name="line-84"></a> <span class="o">:</span> <span class="n">QAbstractItemModel</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span>
-<a name="line-85"></a> <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">Private</span><span class="p">)</span>
+<a name="line-65"></a> <span class="n">MyTile</span><span class="p">()</span>
+<a name="line-66"></a> <span class="o">:</span> <span class="n">Tile</span><span class="p">()</span>
+<a name="line-67"></a> <span class="p">{</span>
+<a name="line-68"></a> <span class="p">}</span>
+<a name="line-69"></a>
+<a name="line-70"></a> <span class="cm">/**</span>
+<a name="line-71"></a><span class="cm"> * Note: MyTile is only deleted by GPSMarkerTiler::tileDelete.</span>
+<a name="line-72"></a><span class="cm"> * All subclasses of AbstractMarkerTiler have to reimplement tileDelete</span>
+<a name="line-73"></a><span class="cm"> * to delete their Tile subclasses.</span>
+<a name="line-74"></a><span class="cm"> * This was done in order not to have any virtual functions</span>
+<a name="line-75"></a><span class="cm"> * in Tile and its subclasses in order to save memory, since there</span>
+<a name="line-76"></a><span class="cm"> * can be a lot of tiles in a MarkerTiler.</span>
+<a name="line-77"></a><span class="cm"> */</span>
+<a name="line-78"></a> <span class="o">~</span><span class="n">MyTile</span><span class="p">()</span>
+<a name="line-79"></a> <span class="p">{</span>
+<a name="line-80"></a> <span class="p">}</span>
+<a name="line-81"></a>
+<a name="line-82"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="o">&gt;</span> <span class="n">imagesId</span><span class="p">;</span>
+<a name="line-83"></a><span class="p">};</span>
+<a name="line-84"></a>
+<a name="line-85"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">Private</span>
<a name="line-86"></a><span class="p">{</span>
-<a name="line-87"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span> <span class="o">=</span> <span class="n">externalTagModel</span><span class="p">;</span>
-<a name="line-88"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TreeBranch</span><span class="p">();</span>
-<a name="line-89"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">=</span> <span class="n">TypeChild</span><span class="p">;</span>
-<a name="line-90"></a>
-<a name="line-91"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{Country}&quot;</span><span class="p">);</span>
-<a name="line-92"></a> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Part of a country&quot;</span><span class="p">,</span> <span class="s">&quot;{State}&quot;</span><span class="p">);</span>
-<a name="line-93"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{County}&quot;</span><span class="p">);</span>
-<a name="line-94"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{City}&quot;</span><span class="p">);</span>
-<a name="line-95"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{Town}&quot;</span><span class="p">);</span>
-<a name="line-96"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{Village}&quot;</span><span class="p">);</span>
-<a name="line-97"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{Hamlet}&quot;</span><span class="p">);</span>
-<a name="line-98"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{Street}&quot;</span><span class="p">);</span>
+<a name="line-87"></a><span class="k">public</span><span class="o">:</span>
+<a name="line-88"></a>
+<a name="line-89"></a> <span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">InternalJobs</span>
+<a name="line-90"></a> <span class="p">{</span>
+<a name="line-91"></a> <span class="k">public</span><span class="o">:</span>
+<a name="line-92"></a>
+<a name="line-93"></a> <span class="n">InternalJobs</span><span class="p">()</span>
+<a name="line-94"></a> <span class="o">:</span> <span class="n">level</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
+<a name="line-95"></a> <span class="n">jobThread</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-96"></a> <span class="n">dataFromDatabase</span><span class="p">()</span>
+<a name="line-97"></a> <span class="p">{</span>
+<a name="line-98"></a> <span class="p">}</span>
<a name="line-99"></a>
-<a name="line-100"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">dataChanged</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="n">QModelIndex</span><span class="p">)),</span>
-<a name="line-101"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotSourceDataChanged</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="n">QModelIndex</span><span class="p">)));</span>
-<a name="line-102"></a>
-<a name="line-103"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">headerDataChanged</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">Orientation</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
-<a name="line-104"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotSourceHeaderDataChanged</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">Orientation</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)));</span>
-<a name="line-105"></a>
-<a name="line-106"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">columnsAboutToBeInserted</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
-<a name="line-107"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotColumnsAboutToBeInserted</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)));</span>
-<a name="line-108"></a>
-<a name="line-109"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">columnsAboutToBeMoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
-<a name="line-110"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotColumnsAboutToBeMoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">)));</span>
-<a name="line-111"></a>
-<a name="line-112"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">columnsAboutToBeRemoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
-<a name="line-113"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotColumnsAboutToBeRemoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)));</span>
-<a name="line-114"></a>
-<a name="line-115"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">columnsInserted</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
-<a name="line-116"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotColumnsInserted</span><span class="p">()));</span>
-<a name="line-117"></a>
-<a name="line-118"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">columnsMoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
-<a name="line-119"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotColumnsMoved</span><span class="p">()));</span>
+<a name="line-100"></a> <span class="kt">int</span> <span class="n">level</span><span class="p">;</span>
+<a name="line-101"></a> <span class="n">GPSDBJobsThread</span><span class="o">*</span> <span class="n">jobThread</span><span class="p">;</span>
+<a name="line-102"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">GPSItemInfo</span><span class="o">&gt;</span> <span class="n">dataFromDatabase</span><span class="p">;</span>
+<a name="line-103"></a> <span class="p">};</span>
+<a name="line-104"></a>
+<a name="line-105"></a> <span class="k">explicit</span> <span class="nf">Private</span><span class="p">()</span>
+<a name="line-106"></a> <span class="o">:</span> <span class="n">jobs</span><span class="p">(),</span>
+<a name="line-107"></a> <span class="n">thumbnailLoadThread</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-108"></a> <span class="n">thumbnailMap</span><span class="p">(),</span>
+<a name="line-109"></a> <span class="n">rectList</span><span class="p">(),</span>
+<a name="line-110"></a> <span class="n">rectLevel</span><span class="p">(),</span>
+<a name="line-111"></a> <span class="n">activeState</span><span class="p">(</span><span class="nb">true</span><span class="p">),</span>
+<a name="line-112"></a> <span class="n">imagesHash</span><span class="p">(),</span>
+<a name="line-113"></a> <span class="n">imageFilterModel</span><span class="p">(),</span>
+<a name="line-114"></a> <span class="n">imageAlbumModel</span><span class="p">(),</span>
+<a name="line-115"></a> <span class="n">selectionModel</span><span class="p">(),</span>
+<a name="line-116"></a> <span class="n">currentRegionSelection</span><span class="p">(),</span>
+<a name="line-117"></a> <span class="n">mapGlobalGroupState</span><span class="p">()</span>
+<a name="line-118"></a> <span class="p">{</span>
+<a name="line-119"></a> <span class="p">}</span>
<a name="line-120"></a>
-<a name="line-121"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">columnsRemoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
-<a name="line-122"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotColumnsRemoved</span><span class="p">()));</span>
-<a name="line-123"></a>
-<a name="line-124"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">layoutAboutToBeChanged</span><span class="p">()),</span>
-<a name="line-125"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotLayoutAboutToBeChanged</span><span class="p">()));</span>
-<a name="line-126"></a>
-<a name="line-127"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">layoutChanged</span><span class="p">()),</span>
-<a name="line-128"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotLayoutChanged</span><span class="p">()));</span>
-<a name="line-129"></a>
-<a name="line-130"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">modelAboutToBeReset</span><span class="p">()),</span>
-<a name="line-131"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotModelAboutToBeReset</span><span class="p">()));</span>
-<a name="line-132"></a>
-<a name="line-133"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">rowsAboutToBeInserted</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
-<a name="line-134"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotRowsAboutToBeInserted</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)));</span>
-<a name="line-135"></a>
-<a name="line-136"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">rowsAboutToBeMoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
-<a name="line-137"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotRowsAboutToBeMoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">)));</span>
-<a name="line-138"></a>
-<a name="line-139"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">rowsAboutToBeRemoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
-<a name="line-140"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotRowsAboutToBeRemoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)));</span>
-<a name="line-141"></a>
-<a name="line-142"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">rowsInserted</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
-<a name="line-143"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotRowsInserted</span><span class="p">()));</span>
-<a name="line-144"></a>
-<a name="line-145"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">rowsMoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
-<a name="line-146"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotRowsMoved</span><span class="p">()));</span>
-<a name="line-147"></a>
-<a name="line-148"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">rowsRemoved</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">)),</span>
-<a name="line-149"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotRowsRemoved</span><span class="p">()));</span>
-<a name="line-150"></a><span class="p">}</span>
-<a name="line-151"></a>
-<a name="line-152"></a><span class="cm">/**</span>
-<a name="line-153"></a><span class="cm"> * Destructor</span>
-<a name="line-154"></a><span class="cm"> */</span>
-<a name="line-155"></a><span class="n">RGTagModel</span><span class="o">::~</span><span class="n">RGTagModel</span><span class="p">()</span>
-<a name="line-156"></a><span class="p">{</span>
-<a name="line-157"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">;</span>
-<a name="line-158"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
-<a name="line-159"></a><span class="p">}</span>
-<a name="line-160"></a>
-<a name="line-161"></a><span class="cm">/**</span>
-<a name="line-162"></a><span class="cm"> * Returns the branch found at index</span>
-<a name="line-163"></a><span class="cm"> * @param index Current model index.</span>
-<a name="line-164"></a><span class="cm"> * @return The branch for the current index.</span>
-<a name="line-165"></a><span class="cm"> */</span>
-<a name="line-166"></a><span class="n">TreeBranch</span><span class="o">*</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">branchFromIndex</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">index</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-167"></a><span class="p">{</span>
-<a name="line-168"></a> <span class="k">return</span> <span class="p">(</span><span class="n">index</span><span class="p">.</span><span class="n">isValid</span><span class="p">()</span> <span class="o">?</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">TreeBranch</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">index</span><span class="p">.</span><span class="n">internalPointer</span><span class="p">())</span> <span class="o">:</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">);</span>
-<a name="line-169"></a><span class="p">}</span>
-<a name="line-170"></a>
-<a name="line-171"></a><span class="kt">void</span> <span class="n">checkTree</span><span class="p">(</span><span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">checkBranch</span><span class="p">,</span> <span class="kt">int</span> <span class="n">level</span><span class="p">)</span>
-<a name="line-172"></a><span class="p">{</span>
-<a name="line-173"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">checkBranch</span><span class="o">-&gt;</span><span class="n">sourceIndex</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
-<a name="line-174"></a> <span class="p">{</span>
-<a name="line-175"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-176"></a> <span class="p">}</span>
-<a name="line-177"></a>
-<a name="line-178"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">j</span> <span class="o">&lt;</span> <span class="n">checkBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span>
-<a name="line-179"></a> <span class="p">{</span>
-<a name="line-180"></a> <span class="n">checkTree</span><span class="p">(</span><span class="n">checkBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">[</span><span class="n">j</span><span class="p">],</span> <span class="n">level</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span>
-<a name="line-181"></a> <span class="p">}</span>
-<a name="line-182"></a>
-<a name="line-183"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">j</span> <span class="o">&lt;</span> <span class="n">checkBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span>
-<a name="line-184"></a> <span class="p">{</span>
-<a name="line-185"></a> <span class="n">checkTree</span><span class="p">(</span><span class="n">checkBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">j</span><span class="p">],</span> <span class="n">level</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span>
-<a name="line-186"></a> <span class="p">}</span>
-<a name="line-187"></a><span class="p">}</span>
-<a name="line-188"></a>
-<a name="line-189"></a><span class="cm">/**</span>
-<a name="line-190"></a><span class="cm"> * Translates the model index from host&#39;s tag model to this model.</span>
-<a name="line-191"></a><span class="cm"> * @return The index of current old tag.</span>
-<a name="line-192"></a><span class="cm"> */</span>
-<a name="line-193"></a><span class="n">QModelIndex</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">fromSourceIndex</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">externalTagModelIndex</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-194"></a><span class="p">{</span>
-<a name="line-195"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">externalTagModelIndex</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
-<a name="line-196"></a> <span class="p">{</span>
-<a name="line-197"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-198"></a> <span class="p">}</span>
+<a name="line-121"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">InternalJobs</span><span class="o">&gt;</span> <span class="n">jobs</span><span class="p">;</span>
+<a name="line-122"></a> <span class="n">ThumbnailLoadThread</span><span class="o">*</span> <span class="n">thumbnailLoadThread</span><span class="p">;</span>
+<a name="line-123"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="p">,</span> <span class="n">QVariant</span><span class="o">&gt;</span> <span class="n">thumbnailMap</span><span class="p">;</span>
+<a name="line-124"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QRectF</span><span class="o">&gt;</span> <span class="n">rectList</span><span class="p">;</span>
+<a name="line-125"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">rectLevel</span><span class="p">;</span>
+<a name="line-126"></a> <span class="kt">bool</span> <span class="n">activeState</span><span class="p">;</span>
+<a name="line-127"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="p">,</span> <span class="n">GPSItemInfo</span><span class="o">&gt;</span> <span class="n">imagesHash</span><span class="p">;</span>
+<a name="line-128"></a> <span class="n">ItemFilterModel</span><span class="o">*</span> <span class="n">imageFilterModel</span><span class="p">;</span>
+<a name="line-129"></a> <span class="n">ItemAlbumModel</span><span class="o">*</span> <span class="n">imageAlbumModel</span><span class="p">;</span>
+<a name="line-130"></a> <span class="n">QItemSelectionModel</span><span class="o">*</span> <span class="n">selectionModel</span><span class="p">;</span>
+<a name="line-131"></a> <span class="n">GeoCoordinates</span><span class="o">::</span><span class="n">Pair</span> <span class="n">currentRegionSelection</span><span class="p">;</span>
+<a name="line-132"></a> <span class="n">GeoGroupState</span> <span class="n">mapGlobalGroupState</span><span class="p">;</span>
+<a name="line-133"></a><span class="p">};</span>
+<a name="line-134"></a>
+<a name="line-135"></a><span class="cm">/**</span>
+<a name="line-136"></a><span class="cm"> * @brief Constructor</span>
+<a name="line-137"></a><span class="cm"> * @param parent Parent object</span>
+<a name="line-138"></a><span class="cm"> */</span>
+<a name="line-139"></a><span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">GPSMarkerTiler</span><span class="p">(</span><span class="n">QObject</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span><span class="p">,</span> <span class="n">ItemFilterModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">imageFilterModel</span><span class="p">,</span>
+<a name="line-140"></a> <span class="n">QItemSelectionModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">selectionModel</span><span class="p">)</span>
+<a name="line-141"></a> <span class="o">:</span> <span class="n">AbstractMarkerTiler</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span>
+<a name="line-142"></a> <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">Private</span><span class="p">())</span>
+<a name="line-143"></a><span class="p">{</span>
+<a name="line-144"></a> <span class="n">resetRootTile</span><span class="p">();</span>
+<a name="line-145"></a>
+<a name="line-146"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">thumbnailLoadThread</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ThumbnailLoadThread</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
+<a name="line-147"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageFilterModel</span> <span class="o">=</span> <span class="n">imageFilterModel</span><span class="p">;</span>
+<a name="line-148"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageAlbumModel</span> <span class="o">=</span> <span class="n">qobject_cast</span><span class="o">&lt;</span><span class="n">ItemAlbumModel</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">imageFilterModel</span><span class="o">-&gt;</span><span class="n">sourceModel</span><span class="p">());</span>
+<a name="line-149"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span> <span class="o">=</span> <span class="n">selectionModel</span><span class="p">;</span>
+<a name="line-150"></a>
+<a name="line-151"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">thumbnailLoadThread</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalThumbnailLoaded</span><span class="p">(</span><span class="n">LoadingDescription</span><span class="p">,</span><span class="n">QPixmap</span><span class="p">)),</span>
+<a name="line-152"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotThumbnailLoaded</span><span class="p">(</span><span class="n">LoadingDescription</span><span class="p">,</span><span class="n">QPixmap</span><span class="p">)));</span>
+<a name="line-153"></a>
+<a name="line-154"></a> <span class="n">connect</span><span class="p">(</span><span class="n">CoreDbAccess</span><span class="o">::</span><span class="n">databaseWatch</span><span class="p">(),</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">imageChange</span><span class="p">(</span><span class="n">ImageChangeset</span><span class="p">)),</span>
+<a name="line-155"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotImageChange</span><span class="p">(</span><span class="n">ImageChangeset</span><span class="p">)),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">QueuedConnection</span><span class="p">);</span>
+<a name="line-156"></a>
+<a name="line-157"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imageAlbumModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">imageInfosAdded</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">ItemInfo</span><span class="o">&gt;</span><span class="p">)),</span>
+<a name="line-158"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotNewModelData</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">ItemInfo</span><span class="o">&gt;</span><span class="p">)));</span>
+<a name="line-159"></a>
+<a name="line-160"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">selectionChanged</span><span class="p">(</span><span class="n">QItemSelection</span><span class="p">,</span><span class="n">QItemSelection</span><span class="p">)),</span>
+<a name="line-161"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotSelectionChanged</span><span class="p">(</span><span class="n">QItemSelection</span><span class="p">,</span><span class="n">QItemSelection</span><span class="p">)));</span>
+<a name="line-162"></a><span class="p">}</span>
+<a name="line-163"></a>
+<a name="line-164"></a><span class="cm">/**</span>
+<a name="line-165"></a><span class="cm"> * @brief Destructor</span>
+<a name="line-166"></a><span class="cm"> */</span>
+<a name="line-167"></a><span class="n">GPSMarkerTiler</span><span class="o">::~</span><span class="n">GPSMarkerTiler</span><span class="p">()</span>
+<a name="line-168"></a><span class="p">{</span>
+<a name="line-169"></a> <span class="c1">// WARNING: we have to call clear! By the time AbstractMarkerTiler calls clear,</span>
+<a name="line-170"></a> <span class="c1">// this object does not exist any more, and thus the tiles are not correctly destroyed!</span>
+<a name="line-171"></a>
+<a name="line-172"></a> <span class="n">clear</span><span class="p">();</span>
+<a name="line-173"></a>
+<a name="line-174"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
+<a name="line-175"></a><span class="p">}</span>
+<a name="line-176"></a>
+<a name="line-177"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">regenerateTiles</span><span class="p">()</span>
+<a name="line-178"></a><span class="p">{</span>
+<a name="line-179"></a><span class="p">}</span>
+<a name="line-180"></a>
+<a name="line-181"></a><span class="cm">/**</span>
+<a name="line-182"></a><span class="cm"> * @brief Requests all images inside a given rectangle from the database.</span>
+<a name="line-183"></a><span class="cm"> *</span>
+<a name="line-184"></a><span class="cm"> * This function calls the database for the images found inside a rectangle</span>
+<a name="line-185"></a><span class="cm"> * defined by upperLeft and lowerRight points. The images are returned from</span>
+<a name="line-186"></a><span class="cm"> * the database in batches.</span>
+<a name="line-187"></a><span class="cm"> *</span>
+<a name="line-188"></a><span class="cm"> * @param upperLeft The North-West point.</span>
+<a name="line-189"></a><span class="cm"> * @param lowerRight The South-East point.</span>
+<a name="line-190"></a><span class="cm"> * @param level The requested tiling level.</span>
+<a name="line-191"></a><span class="cm"> */</span>
+<a name="line-192"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">prepareTiles</span><span class="p">(</span><span class="k">const</span> <span class="n">GeoCoordinates</span><span class="o">&amp;</span> <span class="n">upperLeft</span><span class="p">,</span> <span class="k">const</span> <span class="n">GeoCoordinates</span><span class="o">&amp;</span> <span class="n">lowerRight</span><span class="p">,</span> <span class="kt">int</span> <span class="n">level</span><span class="p">)</span>
+<a name="line-193"></a><span class="p">{</span>
+<a name="line-194"></a> <span class="n">qreal</span> <span class="n">lat1</span> <span class="o">=</span> <span class="n">upperLeft</span><span class="p">.</span><span class="n">lat</span><span class="p">();</span>
+<a name="line-195"></a> <span class="n">qreal</span> <span class="n">lng1</span> <span class="o">=</span> <span class="n">upperLeft</span><span class="p">.</span><span class="n">lon</span><span class="p">();</span>
+<a name="line-196"></a> <span class="n">qreal</span> <span class="n">lat2</span> <span class="o">=</span> <span class="n">lowerRight</span><span class="p">.</span><span class="n">lat</span><span class="p">();</span>
+<a name="line-197"></a> <span class="n">qreal</span> <span class="n">lng2</span> <span class="o">=</span> <span class="n">lowerRight</span><span class="p">.</span><span class="n">lon</span><span class="p">();</span>
+<a name="line-198"></a> <span class="k">const</span> <span class="n">QRectF</span> <span class="nf">requestedRect</span><span class="p">(</span><span class="n">lat1</span><span class="p">,</span> <span class="n">lng1</span><span class="p">,</span> <span class="n">lat2</span> <span class="o">-</span> <span class="n">lat1</span><span class="p">,</span> <span class="n">lng2</span> <span class="o">-</span> <span class="n">lng1</span><span class="p">);</span>
<a name="line-199"></a>
-<a name="line-200"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">externalTagModelIndex</span><span class="p">.</span><span class="n">model</span><span class="p">()</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">);</span>
-<a name="line-201"></a>
-<a name="line-202"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QModelIndex</span><span class="o">&gt;</span> <span class="n">parents</span><span class="p">;</span>
-<a name="line-203"></a> <span class="n">QModelIndex</span> <span class="n">myIndex</span> <span class="o">=</span> <span class="n">externalTagModelIndex</span><span class="p">;</span>
-<a name="line-204"></a> <span class="n">parents</span><span class="o">&lt;&lt;</span><span class="n">myIndex</span><span class="p">;</span>
-<a name="line-205"></a>
-<a name="line-206"></a> <span class="k">while</span> <span class="p">(</span><span class="n">myIndex</span><span class="p">.</span><span class="n">parent</span><span class="p">().</span><span class="n">isValid</span><span class="p">())</span>
-<a name="line-207"></a> <span class="p">{</span>
-<a name="line-208"></a> <span class="n">myIndex</span> <span class="o">=</span> <span class="n">myIndex</span><span class="p">.</span><span class="n">parent</span><span class="p">();</span>
-<a name="line-209"></a> <span class="n">parents</span><span class="p">.</span><span class="n">prepend</span><span class="p">(</span><span class="n">myIndex</span><span class="p">);</span>
-<a name="line-210"></a> <span class="p">}</span>
-<a name="line-211"></a>
-<a name="line-212"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="n">subModelBranch</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">;</span>
-<a name="line-213"></a> <span class="kt">int</span> <span class="n">level</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-214"></a>
-<a name="line-215"></a> <span class="k">while</span> <span class="p">(</span><span class="n">level</span> <span class="o">&lt;=</span> <span class="n">parents</span><span class="p">.</span><span class="n">count</span><span class="p">())</span>
-<a name="line-216"></a> <span class="p">{</span>
-<a name="line-217"></a> <span class="k">if</span> <span class="p">(</span><span class="n">subModelBranch</span><span class="o">-&gt;</span><span class="n">sourceIndex</span> <span class="o">==</span> <span class="n">externalTagModelIndex</span><span class="p">)</span>
-<a name="line-218"></a> <span class="p">{</span>
-<a name="line-219"></a> <span class="k">return</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">subModelBranch</span><span class="o">-&gt;</span><span class="n">sourceIndex</span><span class="p">.</span><span class="n">row</span><span class="p">()</span> <span class="o">+</span>
-<a name="line-220"></a> <span class="n">subModelBranch</span><span class="o">-&gt;</span><span class="n">parent</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span>
-<a name="line-221"></a> <span class="n">subModelBranch</span><span class="o">-&gt;</span><span class="n">parent</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span>
-<a name="line-222"></a> <span class="n">subModelBranch</span><span class="o">-&gt;</span><span class="n">sourceIndex</span><span class="p">.</span><span class="n">column</span><span class="p">(),</span> <span class="n">subModelBranch</span><span class="p">);</span>
-<a name="line-223"></a> <span class="p">}</span>
-<a name="line-224"></a>
-<a name="line-225"></a> <span class="kt">int</span> <span class="n">where</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
-<a name="line-226"></a>
-<a name="line-227"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">subModelBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-228"></a> <span class="p">{</span>
-<a name="line-229"></a> <span class="k">if</span> <span class="p">(</span><span class="n">subModelBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">sourceIndex</span> <span class="o">==</span> <span class="n">parents</span><span class="p">[</span><span class="n">level</span><span class="p">])</span>
-<a name="line-230"></a> <span class="p">{</span>
-<a name="line-231"></a> <span class="n">where</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
-<a name="line-232"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-233"></a> <span class="p">}</span>
-<a name="line-234"></a> <span class="p">}</span>
-<a name="line-235"></a>
-<a name="line-236"></a> <span class="k">if</span> <span class="p">(</span><span class="n">where</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-237"></a> <span class="p">{</span>
-<a name="line-238"></a> <span class="n">subModelBranch</span> <span class="o">=</span> <span class="n">subModelBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">[</span><span class="n">where</span><span class="p">];</span>
-<a name="line-239"></a> <span class="p">}</span>
-<a name="line-240"></a> <span class="k">else</span>
-<a name="line-241"></a> <span class="p">{</span>
-<a name="line-242"></a> <span class="k">if</span> <span class="p">(</span><span class="n">level</span><span class="o">&gt;=</span><span class="n">parents</span><span class="p">.</span><span class="n">count</span><span class="p">())</span>
-<a name="line-243"></a> <span class="p">{</span>
-<a name="line-244"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-245"></a> <span class="p">}</span>
-<a name="line-246"></a>
-<a name="line-247"></a> <span class="c1">// TODO: check when rows are different</span>
-<a name="line-248"></a>
-<a name="line-249"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">newTreeBranch</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TreeBranch</span><span class="p">();</span>
-<a name="line-250"></a> <span class="n">newTreeBranch</span><span class="o">-&gt;</span><span class="n">sourceIndex</span> <span class="o">=</span> <span class="n">parents</span><span class="p">[</span><span class="n">level</span><span class="p">];</span>
-<a name="line-251"></a> <span class="n">newTreeBranch</span><span class="o">-&gt;</span><span class="n">data</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">(</span><span class="n">externalTagModelIndex</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">();</span>
-<a name="line-252"></a> <span class="n">newTreeBranch</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">=</span> <span class="n">subModelBranch</span><span class="p">;</span>
-<a name="line-253"></a> <span class="n">newTreeBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">=</span> <span class="n">TypeChild</span><span class="p">;</span>
-<a name="line-254"></a>
-<a name="line-255"></a> <span class="n">subModelBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">newTreeBranch</span><span class="p">);</span>
-<a name="line-256"></a> <span class="n">subModelBranch</span> <span class="o">=</span> <span class="n">newTreeBranch</span><span class="p">;</span>
-<a name="line-257"></a> <span class="p">}</span>
-<a name="line-258"></a>
-<a name="line-259"></a> <span class="n">level</span><span class="o">++</span><span class="p">;</span>
-<a name="line-260"></a> <span class="p">}</span>
-<a name="line-261"></a>
-<a name="line-262"></a> <span class="c1">//no index is found</span>
-<a name="line-263"></a>
-<a name="line-264"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-265"></a><span class="p">}</span>
-<a name="line-266"></a>
-<a name="line-267"></a><span class="cm">/**</span>
-<a name="line-268"></a><span class="cm"> * Translates the model index from this model to host&#39;s tag model.</span>
-<a name="line-269"></a><span class="cm"> * @return The index of a tag in host&#39;s tag model.</span>
-<a name="line-270"></a><span class="cm"> */</span>
-<a name="line-271"></a><span class="n">QModelIndex</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">toSourceIndex</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">tagModelIndex</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-272"></a><span class="p">{</span>
-<a name="line-273"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">tagModelIndex</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
-<a name="line-274"></a> <span class="p">{</span>
-<a name="line-275"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-276"></a> <span class="p">}</span>
+<a name="line-200"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rectList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-201"></a> <span class="p">{</span>
+<a name="line-202"></a> <span class="k">if</span> <span class="p">(</span><span class="n">level</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rectLevel</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">))</span>
+<a name="line-203"></a> <span class="p">{</span>
+<a name="line-204"></a> <span class="k">continue</span><span class="p">;</span>
+<a name="line-205"></a> <span class="p">}</span>
+<a name="line-206"></a>
+<a name="line-207"></a> <span class="n">qreal</span> <span class="n">rectLat1</span><span class="p">,</span> <span class="n">rectLng1</span><span class="p">,</span> <span class="n">rectLat2</span><span class="p">,</span> <span class="n">rectLng2</span><span class="p">;</span>
+<a name="line-208"></a> <span class="k">const</span> <span class="n">QRectF</span> <span class="n">currentRect</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rectList</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
+<a name="line-209"></a> <span class="n">currentRect</span><span class="p">.</span><span class="n">getCoords</span><span class="p">(</span><span class="o">&amp;</span><span class="n">rectLat1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">rectLng1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">rectLat2</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">rectLng2</span><span class="p">);</span>
+<a name="line-210"></a>
+<a name="line-211"></a> <span class="c1">// do nothing if this rectangle was already requested</span>
+<a name="line-212"></a>
+<a name="line-213"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentRect</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">requestedRect</span><span class="p">))</span>
+<a name="line-214"></a> <span class="p">{</span>
+<a name="line-215"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-216"></a> <span class="p">}</span>
+<a name="line-217"></a>
+<a name="line-218"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentRect</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">lat1</span><span class="p">,</span> <span class="n">lng1</span><span class="p">))</span>
+<a name="line-219"></a> <span class="p">{</span>
+<a name="line-220"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentRect</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">lat2</span><span class="p">,</span> <span class="n">lng1</span><span class="p">))</span>
+<a name="line-221"></a> <span class="p">{</span>
+<a name="line-222"></a> <span class="n">lng1</span> <span class="o">=</span> <span class="n">rectLng2</span><span class="p">;</span>
+<a name="line-223"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-224"></a> <span class="p">}</span>
+<a name="line-225"></a> <span class="p">}</span>
+<a name="line-226"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">currentRect</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">lat2</span><span class="p">,</span> <span class="n">lng1</span><span class="p">))</span>
+<a name="line-227"></a> <span class="p">{</span>
+<a name="line-228"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentRect</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">lat2</span><span class="p">,</span> <span class="n">lng2</span><span class="p">))</span>
+<a name="line-229"></a> <span class="p">{</span>
+<a name="line-230"></a> <span class="n">lat2</span> <span class="o">=</span> <span class="n">rectLat1</span><span class="p">;</span>
+<a name="line-231"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-232"></a> <span class="p">}</span>
+<a name="line-233"></a> <span class="p">}</span>
+<a name="line-234"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">currentRect</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">lat2</span><span class="p">,</span> <span class="n">lng2</span><span class="p">))</span>
+<a name="line-235"></a> <span class="p">{</span>
+<a name="line-236"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentRect</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">lat1</span><span class="p">,</span> <span class="n">lng2</span><span class="p">))</span>
+<a name="line-237"></a> <span class="p">{</span>
+<a name="line-238"></a> <span class="n">lng2</span> <span class="o">=</span> <span class="n">rectLng1</span><span class="p">;</span>
+<a name="line-239"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-240"></a> <span class="p">}</span>
+<a name="line-241"></a> <span class="p">}</span>
+<a name="line-242"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">currentRect</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">lat1</span><span class="p">,</span> <span class="n">lng2</span><span class="p">))</span>
+<a name="line-243"></a> <span class="p">{</span>
+<a name="line-244"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentRect</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">lat1</span><span class="p">,</span> <span class="n">lng1</span><span class="p">))</span>
+<a name="line-245"></a> <span class="p">{</span>
+<a name="line-246"></a> <span class="n">lat1</span> <span class="o">=</span> <span class="n">rectLat2</span><span class="p">;</span>
+<a name="line-247"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-248"></a> <span class="p">}</span>
+<a name="line-249"></a> <span class="p">}</span>
+<a name="line-250"></a> <span class="p">}</span>
+<a name="line-251"></a>
+<a name="line-252"></a> <span class="k">const</span> <span class="n">QRectF</span> <span class="n">newRect</span><span class="p">(</span><span class="n">lat1</span><span class="p">,</span> <span class="n">lng1</span><span class="p">,</span> <span class="n">lat2</span> <span class="o">-</span> <span class="n">lat1</span><span class="p">,</span> <span class="n">lng2</span> <span class="o">-</span> <span class="n">lng1</span><span class="p">);</span>
+<a name="line-253"></a>
+<a name="line-254"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rectList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">newRect</span><span class="p">);</span>
+<a name="line-255"></a>
+<a name="line-256"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rectLevel</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">level</span><span class="p">);</span>
+<a name="line-257"></a>
+<a name="line-258"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Listing&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">lat1</span> <span class="o">&lt;&lt;</span> <span class="n">lat2</span> <span class="o">&lt;&lt;</span> <span class="n">lng1</span> <span class="o">&lt;&lt;</span> <span class="n">lng2</span><span class="p">;</span>
+<a name="line-259"></a>
+<a name="line-260"></a> <span class="n">GPSDBJobInfo</span> <span class="n">jobInfo</span><span class="p">;</span>
+<a name="line-261"></a> <span class="n">jobInfo</span><span class="p">.</span><span class="n">setLat1</span><span class="p">(</span><span class="n">lat1</span><span class="p">);</span>
+<a name="line-262"></a> <span class="n">jobInfo</span><span class="p">.</span><span class="n">setLat2</span><span class="p">(</span><span class="n">lat2</span><span class="p">);</span>
+<a name="line-263"></a> <span class="n">jobInfo</span><span class="p">.</span><span class="n">setLng1</span><span class="p">(</span><span class="n">lng1</span><span class="p">);</span>
+<a name="line-264"></a> <span class="n">jobInfo</span><span class="p">.</span><span class="n">setLng2</span><span class="p">(</span><span class="n">lng2</span><span class="p">);</span>
+<a name="line-265"></a>
+<a name="line-266"></a> <span class="n">GPSDBJobsThread</span> <span class="o">*</span><span class="k">const</span> <span class="n">currentJob</span> <span class="o">=</span> <span class="n">DBJobsManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">startGPSJobThread</span><span class="p">(</span><span class="n">jobInfo</span><span class="p">);</span>
+<a name="line-267"></a>
+<a name="line-268"></a> <span class="n">Private</span><span class="o">::</span><span class="n">InternalJobs</span> <span class="n">currentJobInfo</span><span class="p">;</span>
+<a name="line-269"></a>
+<a name="line-270"></a> <span class="n">currentJobInfo</span><span class="p">.</span><span class="n">jobThread</span> <span class="o">=</span> <span class="n">currentJob</span><span class="p">;</span>
+<a name="line-271"></a> <span class="n">currentJobInfo</span><span class="p">.</span><span class="n">level</span> <span class="o">=</span> <span class="n">level</span><span class="p">;</span>
+<a name="line-272"></a>
+<a name="line-273"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentJobInfo</span><span class="p">);</span>
+<a name="line-274"></a>
+<a name="line-275"></a> <span class="n">connect</span><span class="p">(</span><span class="n">currentJob</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">finished</span><span class="p">()),</span>
+<a name="line-276"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotMapImagesJobResult</span><span class="p">()));</span>
<a name="line-277"></a>
-<a name="line-278"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">tagModelIndex</span><span class="p">.</span><span class="n">model</span><span class="p">()</span> <span class="o">==</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-279"></a><span class="cm">/*</span>
-<a name="line-280"></a><span class="cm"> static_cast&lt;TreeBranch*&gt;(tagModelIndex.internalPointer());</span>
-<a name="line-281"></a><span class="cm">*/</span>
-<a name="line-282"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">treeBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">tagModelIndex</span><span class="p">);</span>
-<a name="line-283"></a>
-<a name="line-284"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">treeBranch</span><span class="p">)</span>
-<a name="line-285"></a> <span class="p">{</span>
-<a name="line-286"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-287"></a> <span class="p">}</span>
-<a name="line-288"></a>
-<a name="line-289"></a> <span class="k">return</span> <span class="n">treeBranch</span><span class="o">-&gt;</span><span class="n">sourceIndex</span><span class="p">;</span>
-<a name="line-290"></a><span class="p">}</span>
-<a name="line-291"></a>
-<a name="line-292"></a><span class="cm">/**</span>
-<a name="line-293"></a><span class="cm"> * Adds a spacer tag.</span>
-<a name="line-294"></a><span class="cm"> * @param parent The index of the parent. If parent == QModelIndex(), then the spacer is added to top-level</span>
-<a name="line-295"></a><span class="cm"> * @param spacerName The name of the spacer. If it&#39;s an address element, the address element name will have the form {addressElement}.For example: {Country}, {City}...</span>
-<a name="line-296"></a><span class="cm"> *</span>
-<a name="line-297"></a><span class="cm"> */</span>
-<a name="line-298"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">addSpacerTag</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">parent</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">spacerName</span><span class="p">)</span>
-<a name="line-299"></a><span class="p">{</span>
-<a name="line-300"></a><span class="cm">/*</span>
-<a name="line-301"></a><span class="cm"> TreeBranch* const parentBranch = parent.isValid() ? static_cast&lt;TreeBranch*&gt;(parent.internalPointer()) : d-&gt;rootTag;</span>
-<a name="line-302"></a><span class="cm">*/</span>
-<a name="line-303"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
-<a name="line-304"></a> <span class="kt">bool</span> <span class="n">found</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-305"></a>
-<a name="line-306"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-307"></a> <span class="p">{</span>
-<a name="line-308"></a> <span class="k">for</span> <span class="p">(</span> <span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-309"></a> <span class="p">{</span>
-<a name="line-310"></a> <span class="k">if</span> <span class="p">(</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">data</span> <span class="o">==</span> <span class="n">spacerName</span><span class="p">)</span>
-<a name="line-311"></a> <span class="p">{</span>
-<a name="line-312"></a> <span class="n">found</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-313"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-314"></a> <span class="p">}</span>
-<a name="line-315"></a> <span class="p">}</span>
-<a name="line-316"></a> <span class="p">}</span>
-<a name="line-317"></a>
-<a name="line-318"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">found</span><span class="p">)</span>
-<a name="line-319"></a> <span class="p">{</span>
-<a name="line-320"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">newSpacer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TreeBranch</span><span class="p">();</span>
-<a name="line-321"></a> <span class="n">newSpacer</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parentBranch</span><span class="p">;</span>
-<a name="line-322"></a> <span class="n">newSpacer</span><span class="o">-&gt;</span><span class="n">data</span> <span class="o">=</span> <span class="n">spacerName</span><span class="p">;</span>
-<a name="line-323"></a> <span class="n">newSpacer</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">=</span> <span class="n">TypeSpacer</span><span class="p">;</span>
-<a name="line-324"></a>
-<a name="line-325"></a> <span class="n">beginInsertRows</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">());</span>
-<a name="line-326"></a> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">newSpacer</span><span class="p">);</span>
-<a name="line-327"></a> <span class="n">endInsertRows</span><span class="p">();</span>
-<a name="line-328"></a> <span class="p">}</span>
-<a name="line-329"></a><span class="p">}</span>
+<a name="line-278"></a> <span class="n">connect</span><span class="p">(</span><span class="n">currentJob</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">data</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">ItemListerRecord</span><span class="o">&gt;</span><span class="p">)),</span>
+<a name="line-279"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotMapImagesJobData</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">ItemListerRecord</span><span class="o">&gt;</span><span class="p">)));</span>
+<a name="line-280"></a><span class="p">}</span>
+<a name="line-281"></a>
+<a name="line-282"></a><span class="cm">/**</span>
+<a name="line-283"></a><span class="cm"> * @brief Returns a pointer to a tile.</span>
+<a name="line-284"></a><span class="cm"> * @param tileIndex The index of a tile.</span>
+<a name="line-285"></a><span class="cm"> * @param stopIfEmpty Determines whether child tiles are also created for empty tiles.</span>
+<a name="line-286"></a><span class="cm"> */</span>
+<a name="line-287"></a><span class="n">AbstractMarkerTiler</span><span class="o">::</span><span class="n">Tile</span><span class="o">*</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">getTile</span><span class="p">(</span><span class="k">const</span> <span class="n">TileIndex</span><span class="o">&amp;</span> <span class="n">tileIndex</span><span class="p">,</span> <span class="k">const</span> <span class="kt">bool</span> <span class="n">stopIfEmpty</span><span class="p">)</span>
+<a name="line-288"></a><span class="p">{</span>
+<a name="line-289"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">tileIndex</span><span class="p">.</span><span class="n">level</span><span class="p">()</span> <span class="o">&lt;=</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">MaxLevel</span><span class="p">);</span>
+<a name="line-290"></a>
+<a name="line-291"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="n">tile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">rootTile</span><span class="p">());</span>
+<a name="line-292"></a>
+<a name="line-293"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">level</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">level</span> <span class="o">&lt;</span> <span class="n">tileIndex</span><span class="p">.</span><span class="n">indexCount</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">level</span><span class="p">)</span>
+<a name="line-294"></a> <span class="p">{</span>
+<a name="line-295"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">tileIndex</span><span class="p">.</span><span class="n">linearIndex</span><span class="p">(</span><span class="n">level</span><span class="p">);</span>
+<a name="line-296"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="n">childTile</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-297"></a>
+<a name="line-298"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tile</span><span class="o">-&gt;</span><span class="n">childrenEmpty</span><span class="p">())</span>
+<a name="line-299"></a> <span class="p">{</span>
+<a name="line-300"></a> <span class="k">if</span> <span class="p">(</span><span class="n">stopIfEmpty</span><span class="p">)</span>
+<a name="line-301"></a> <span class="p">{</span>
+<a name="line-302"></a> <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-303"></a> <span class="p">}</span>
+<a name="line-304"></a>
+<a name="line-305"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">tile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-306"></a> <span class="p">{</span>
+<a name="line-307"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">currentImageId</span> <span class="o">=</span> <span class="n">tile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
+<a name="line-308"></a> <span class="k">const</span> <span class="n">GPSItemInfo</span> <span class="n">currentItemInfo</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">[</span><span class="n">currentImageId</span><span class="p">];</span>
+<a name="line-309"></a> <span class="k">const</span> <span class="n">TileIndex</span> <span class="n">markerTileIndex</span> <span class="o">=</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">fromCoordinates</span><span class="p">(</span><span class="n">currentItemInfo</span><span class="p">.</span><span class="n">coordinates</span><span class="p">,</span> <span class="n">level</span><span class="p">);</span>
+<a name="line-310"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">newTileIndex</span> <span class="o">=</span> <span class="n">markerTileIndex</span><span class="p">.</span><span class="n">lastIndex</span><span class="p">();</span>
+<a name="line-311"></a><span class="hll"> <span class="n">MyTile</span><span class="o">*</span> <span class="k">const</span> <span class="n">newTile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">tile</span><span class="o">-&gt;</span><span class="n">getChild</span><span class="p">(</span><span class="n">newTileIndex</span><span class="p">));</span><span class='error2'>&lt;--- Shadowed declaration</span>
+</span><a name="line-312"></a>
+<a name="line-313"></a> <span class="k">if</span> <span class="p">(</span><span class="n">newTile</span> <span class="o">==</span> <span class="k">nullptr</span><span class="p">)</span>
+<a name="line-314"></a> <span class="p">{</span>
+<a name="line-315"></a><span class="hll"> <span class="n">MyTile</span><span class="o">*</span> <span class="k">const</span> <span class="n">newTile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">tileNew</span><span class="p">());</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-316"></a> <span class="n">newTile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentImageId</span><span class="p">);</span>
+<a name="line-317"></a> <span class="n">tile</span><span class="o">-&gt;</span><span class="n">addChild</span><span class="p">(</span><span class="n">newTileIndex</span><span class="p">,</span> <span class="n">newTile</span><span class="p">);</span>
+<a name="line-318"></a> <span class="p">}</span>
+<a name="line-319"></a> <span class="k">else</span>
+<a name="line-320"></a> <span class="p">{</span>
+<a name="line-321"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">newTile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">currentImageId</span><span class="p">))</span>
+<a name="line-322"></a> <span class="p">{</span>
+<a name="line-323"></a> <span class="n">newTile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentImageId</span><span class="p">);</span>
+<a name="line-324"></a> <span class="p">}</span>
+<a name="line-325"></a> <span class="p">}</span>
+<a name="line-326"></a> <span class="p">}</span>
+<a name="line-327"></a> <span class="p">}</span>
+<a name="line-328"></a>
+<a name="line-329"></a> <span class="n">childTile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">tile</span><span class="o">-&gt;</span><span class="n">getChild</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">));</span>
<a name="line-330"></a>
-<a name="line-331"></a><span class="cm">/**</span>
-<a name="line-332"></a><span class="cm"> * Adds a tag containing data returned from backends.</span>
-<a name="line-333"></a><span class="cm"> * @param parent The index of the parent.</span>
-<a name="line-334"></a><span class="cm"> * @param newTagName The name of the new tag.</span>
-<a name="line-335"></a><span class="cm"> */</span>
-<a name="line-336"></a><span class="n">QPersistentModelIndex</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">addNewTag</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">parent</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">newTagName</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">newElement</span><span class="p">)</span>
-<a name="line-337"></a><span class="p">{</span>
-<a name="line-338"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
-<a name="line-339"></a><span class="cm">/*</span>
-<a name="line-340"></a><span class="cm"> parent.isValid() ? static_cast&lt;TreeBranch*&gt;(parent.internalPointer()) : d-&gt;rootTag;</span>
-<a name="line-341"></a><span class="cm">*/</span>
-<a name="line-342"></a> <span class="kt">bool</span> <span class="n">found</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-343"></a> <span class="n">QPersistentModelIndex</span> <span class="n">retIndex</span><span class="p">;</span>
-<a name="line-344"></a>
-<a name="line-345"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-346"></a> <span class="p">{</span>
-<a name="line-347"></a> <span class="k">for</span> <span class="p">(</span> <span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-348"></a> <span class="p">{</span>
-<a name="line-349"></a> <span class="k">if</span> <span class="p">(</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">data</span> <span class="o">==</span> <span class="n">newTagName</span><span class="p">)</span>
-<a name="line-350"></a> <span class="p">{</span>
-<a name="line-351"></a> <span class="n">found</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-352"></a> <span class="n">retIndex</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">i</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
-<a name="line-353"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-354"></a> <span class="p">}</span>
-<a name="line-355"></a> <span class="p">}</span>
-<a name="line-356"></a> <span class="p">}</span>
-<a name="line-357"></a>
-<a name="line-358"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">found</span><span class="p">)</span>
-<a name="line-359"></a> <span class="p">{</span>
-<a name="line-360"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">newTagChild</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TreeBranch</span><span class="p">();</span>
-<a name="line-361"></a> <span class="n">newTagChild</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parentBranch</span><span class="p">;</span>
-<a name="line-362"></a> <span class="n">newTagChild</span><span class="o">-&gt;</span><span class="n">data</span> <span class="o">=</span> <span class="n">newTagName</span><span class="p">;</span>
-<a name="line-363"></a> <span class="n">newTagChild</span><span class="o">-&gt;</span><span class="n">help</span> <span class="o">=</span> <span class="n">newElement</span><span class="p">;</span>
-<a name="line-364"></a> <span class="n">newTagChild</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">=</span> <span class="n">TypeNewChild</span><span class="p">;</span>
+<a name="line-331"></a> <span class="k">if</span> <span class="p">(</span><span class="n">childTile</span> <span class="o">==</span> <span class="k">nullptr</span><span class="p">)</span>
+<a name="line-332"></a> <span class="p">{</span>
+<a name="line-333"></a> <span class="k">if</span> <span class="p">(</span><span class="n">stopIfEmpty</span><span class="p">)</span>
+<a name="line-334"></a> <span class="p">{</span>
+<a name="line-335"></a> <span class="c1">// there will be no markers in this tile, therefore stop</span>
+<a name="line-336"></a>
+<a name="line-337"></a> <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-338"></a> <span class="p">}</span>
+<a name="line-339"></a>
+<a name="line-340"></a> <span class="n">childTile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">tileNew</span><span class="p">());</span>
+<a name="line-341"></a> <span class="n">tile</span><span class="o">-&gt;</span><span class="n">addChild</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">,</span> <span class="n">childTile</span><span class="p">);</span>
+<a name="line-342"></a> <span class="p">}</span>
+<a name="line-343"></a>
+<a name="line-344"></a> <span class="n">tile</span> <span class="o">=</span> <span class="n">childTile</span><span class="p">;</span>
+<a name="line-345"></a> <span class="p">}</span>
+<a name="line-346"></a>
+<a name="line-347"></a> <span class="k">return</span> <span class="n">tile</span><span class="p">;</span>
+<a name="line-348"></a><span class="p">}</span>
+<a name="line-349"></a>
+<a name="line-350"></a><span class="kt">int</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">getTileMarkerCount</span><span class="p">(</span><span class="k">const</span> <span class="n">TileIndex</span><span class="o">&amp;</span> <span class="n">tileIndex</span><span class="p">)</span>
+<a name="line-351"></a><span class="p">{</span>
+<a name="line-352"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="k">const</span> <span class="n">tile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">getTile</span><span class="p">(</span><span class="n">tileIndex</span><span class="p">));</span>
+<a name="line-353"></a>
+<a name="line-354"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tile</span><span class="p">)</span>
+<a name="line-355"></a> <span class="p">{</span>
+<a name="line-356"></a> <span class="k">return</span> <span class="n">tile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">count</span><span class="p">();</span>
+<a name="line-357"></a> <span class="p">}</span>
+<a name="line-358"></a>
+<a name="line-359"></a> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-360"></a><span class="p">}</span>
+<a name="line-361"></a>
+<a name="line-362"></a><span class="kt">int</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">getTileSelectedCount</span><span class="p">(</span><span class="k">const</span> <span class="n">TileIndex</span><span class="o">&amp;</span> <span class="n">tileIndex</span><span class="p">)</span>
+<a name="line-363"></a><span class="p">{</span>
+<a name="line-364"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">tileIndex</span><span class="p">)</span>
<a name="line-365"></a>
-<a name="line-366"></a> <span class="n">beginInsertRows</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span><span class="o">+</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span>
-<a name="line-367"></a> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span><span class="o">+</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">());</span>
-<a name="line-368"></a> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">newTagChild</span><span class="p">);</span>
-<a name="line-369"></a> <span class="n">endInsertRows</span><span class="p">();</span>
-<a name="line-370"></a>
-<a name="line-371"></a> <span class="n">retIndex</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span>
-<a name="line-372"></a> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">last</span><span class="p">());</span>
-<a name="line-373"></a> <span class="p">}</span>
-<a name="line-374"></a>
-<a name="line-375"></a> <span class="k">return</span> <span class="n">retIndex</span><span class="p">;</span>
-<a name="line-376"></a><span class="p">}</span>
-<a name="line-377"></a>
-<a name="line-378"></a><span class="cm">/**</span>
-<a name="line-379"></a><span class="cm"> * Gets the address of a tag.</span>
-<a name="line-380"></a><span class="cm"> */</span>
-<a name="line-381"></a><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">getTagAddress</span><span class="p">()</span>
-<a name="line-382"></a><span class="p">{</span>
-<a name="line-383"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="n">tagAddress</span><span class="p">;</span>
-<a name="line-384"></a>
-<a name="line-385"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-386"></a> <span class="p">{</span>
-<a name="line-387"></a> <span class="n">TagData</span> <span class="n">tagData</span><span class="p">;</span>
-<a name="line-388"></a> <span class="n">tagData</span><span class="p">.</span><span class="n">tagName</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagList</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
-<a name="line-389"></a> <span class="n">tagData</span><span class="p">.</span><span class="n">tagType</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagTypeList</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
-<a name="line-390"></a> <span class="n">tagAddress</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">tagData</span><span class="p">);</span>
-<a name="line-391"></a> <span class="p">}</span>
-<a name="line-392"></a>
-<a name="line-393"></a> <span class="k">return</span> <span class="n">tagAddress</span><span class="p">;</span>
-<a name="line-394"></a><span class="p">}</span>
-<a name="line-395"></a>
-<a name="line-396"></a><span class="cm">/**</span>
-<a name="line-397"></a><span class="cm"> * The function starts to scan the tree starting with currentBranch. When it finds a spacer containing an address element, it</span>
-<a name="line-398"></a><span class="cm"> * looks to see if the address element is found in addressElements list. If it&#39;s found, a new tag is added.</span>
-<a name="line-399"></a><span class="cm"> * @param currentBranch The branch from where the scan starts.</span>
-<a name="line-400"></a><span class="cm"> * @param currentRow The row of the current branch.</span>
-<a name="line-401"></a><span class="cm"> * @param addressElements A list containing address elements. Example: {Country}, {City}...</span>
-<a name="line-402"></a><span class="cm"> * @param elementsData A list containing the name of each address element found in elements. Example: France, Paris...</span>
-<a name="line-403"></a><span class="cm"> */</span>
-<a name="line-404"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">addDataInTree</span><span class="p">(</span><span class="n">TreeBranch</span><span class="o">*</span> <span class="n">currentBranch</span><span class="p">,</span>
-<a name="line-405"></a> <span class="kt">int</span> <span class="n">currentRow</span><span class="p">,</span>
-<a name="line-406"></a> <span class="k">const</span> <span class="n">QStringList</span><span class="o">&amp;</span> <span class="n">addressElements</span><span class="p">,</span>
-<a name="line-407"></a> <span class="k">const</span> <span class="n">QStringList</span><span class="o">&amp;</span> <span class="n">elementsData</span><span class="p">)</span>
-<a name="line-408"></a><span class="p">{</span>
-<a name="line-409"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-410"></a> <span class="p">{</span>
-<a name="line-411"></a> <span class="kt">bool</span> <span class="n">newDataAdded</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-412"></a>
-<a name="line-413"></a> <span class="c1">//this spacer is not an address element</span>
-<a name="line-414"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{&quot;</span><span class="p">))</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-415"></a> <span class="p">{</span>
-<a name="line-416"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">);</span>
-<a name="line-417"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagTypeList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">TypeSpacer</span><span class="p">);</span>
-<a name="line-418"></a> <span class="n">addDataInTree</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">i</span><span class="p">,</span> <span class="n">addressElements</span><span class="p">,</span> <span class="n">elementsData</span><span class="p">);</span>
-<a name="line-419"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagList</span><span class="p">.</span><span class="n">removeLast</span><span class="p">();</span>
-<a name="line-420"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagTypeList</span><span class="p">.</span><span class="n">removeLast</span><span class="p">();</span>
-<a name="line-421"></a> <span class="p">}</span>
-<a name="line-422"></a> <span class="k">else</span>
-<a name="line-423"></a> <span class="p">{</span>
-<a name="line-424"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">j</span> <span class="o">&lt;</span> <span class="n">addressElements</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span>
-<a name="line-425"></a> <span class="p">{</span>
-<a name="line-426"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">data</span> <span class="o">==</span> <span class="n">addressElements</span><span class="p">[</span><span class="n">j</span><span class="p">])</span>
-<a name="line-427"></a> <span class="p">{</span>
-<a name="line-428"></a> <span class="n">newDataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-429"></a> <span class="n">QModelIndex</span> <span class="n">currentIndex</span><span class="p">;</span>
-<a name="line-430"></a>
-<a name="line-431"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">)</span>
-<a name="line-432"></a> <span class="p">{</span>
-<a name="line-433"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-434"></a> <span class="p">}</span>
-<a name="line-435"></a> <span class="k">else</span>
-<a name="line-436"></a> <span class="p">{</span>
-<a name="line-437"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">currentRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">currentBranch</span><span class="p">);</span>
-<a name="line-438"></a> <span class="p">}</span>
-<a name="line-439"></a>
-<a name="line-440"></a> <span class="c1">// checks if adds the new tag as a sibling to a spacer, or as a child of a new tag</span>
-<a name="line-441"></a>
-<a name="line-442"></a> <span class="n">QPersistentModelIndex</span> <span class="n">auxIndex</span><span class="p">;</span>
-<a name="line-443"></a>
-<a name="line-444"></a> <span class="k">if</span> <span class="p">((</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">!=</span> <span class="n">TypeSpacer</span> <span class="o">||</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{&quot;</span><span class="p">))</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="o">||</span>
-<a name="line-445"></a> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">auxIndexList</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">()))</span>
-<a name="line-446"></a> <span class="p">{</span>
-<a name="line-447"></a> <span class="n">auxIndex</span> <span class="o">=</span> <span class="n">addNewTag</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">,</span> <span class="n">elementsData</span><span class="p">[</span><span class="n">j</span><span class="p">],</span> <span class="n">addressElements</span><span class="p">[</span><span class="n">j</span><span class="p">]);</span>
-<a name="line-448"></a> <span class="p">}</span>
-<a name="line-449"></a> <span class="k">else</span>
-<a name="line-450"></a> <span class="p">{</span>
-<a name="line-451"></a> <span class="n">auxIndex</span> <span class="o">=</span> <span class="n">addNewTag</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">auxIndexList</span><span class="p">.</span><span class="n">last</span><span class="p">(),</span> <span class="n">elementsData</span><span class="p">[</span><span class="n">j</span><span class="p">],</span> <span class="n">addressElements</span><span class="p">[</span><span class="n">j</span><span class="p">]);</span>
-<a name="line-452"></a> <span class="p">}</span>
+<a name="line-366"></a> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-367"></a><span class="p">}</span>
+<a name="line-368"></a>
+<a name="line-369"></a><span class="cm">/**</span>
+<a name="line-370"></a><span class="cm"> * @brief This function finds the best representative marker from a tile of markers.</span>
+<a name="line-371"></a><span class="cm"> * @param tileIndex Index of the tile from which the best marker should be found.</span>
+<a name="line-372"></a><span class="cm"> * @param sortKey Sets the criteria for selecting the representative thumbnail, a combination of the SortOptions bits.</span>
+<a name="line-373"></a><span class="cm"> * @return Returns the internally used index of the marker.</span>
+<a name="line-374"></a><span class="cm"> */</span>
+<a name="line-375"></a><span class="n">QVariant</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">getTileRepresentativeMarker</span><span class="p">(</span><span class="k">const</span> <span class="n">TileIndex</span><span class="o">&amp;</span> <span class="n">tileIndex</span><span class="p">,</span> <span class="k">const</span> <span class="kt">int</span> <span class="n">sortKey</span><span class="p">)</span>
+<a name="line-376"></a><span class="p">{</span>
+<a name="line-377"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="k">const</span> <span class="n">tile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">getTile</span><span class="p">(</span><span class="n">tileIndex</span><span class="p">,</span> <span class="nb">true</span><span class="p">));</span>
+<a name="line-378"></a>
+<a name="line-379"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">tile</span><span class="p">)</span>
+<a name="line-380"></a> <span class="p">{</span>
+<a name="line-381"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="p">();</span>
+<a name="line-382"></a> <span class="p">}</span>
+<a name="line-383"></a>
+<a name="line-384"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-385"></a> <span class="p">{</span>
+<a name="line-386"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="p">();</span>
+<a name="line-387"></a> <span class="p">}</span>
+<a name="line-388"></a>
+<a name="line-389"></a> <span class="n">GPSItemInfo</span> <span class="n">bestMarkerInfo</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">tile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">first</span><span class="p">());</span>
+<a name="line-390"></a> <span class="n">GeoGroupState</span> <span class="n">bestMarkerGroupState</span> <span class="o">=</span> <span class="n">getImageState</span><span class="p">(</span><span class="n">bestMarkerInfo</span><span class="p">.</span><span class="n">id</span><span class="p">);</span>
+<a name="line-391"></a>
+<a name="line-392"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">1</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">tile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-393"></a> <span class="p">{</span>
+<a name="line-394"></a> <span class="k">const</span> <span class="n">GPSItemInfo</span> <span class="n">currentMarkerInfo</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">tile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">));</span>
+<a name="line-395"></a> <span class="k">const</span> <span class="n">GeoGroupState</span> <span class="n">currentMarkerGroupState</span> <span class="o">=</span> <span class="n">getImageState</span><span class="p">(</span><span class="n">currentMarkerInfo</span><span class="p">.</span><span class="n">id</span><span class="p">);</span>
+<a name="line-396"></a>
+<a name="line-397"></a> <span class="k">if</span> <span class="p">(</span><span class="n">GPSItemInfoSorter</span><span class="o">::</span><span class="n">fitsBetter</span><span class="p">(</span><span class="n">bestMarkerInfo</span><span class="p">,</span>
+<a name="line-398"></a> <span class="n">bestMarkerGroupState</span><span class="p">,</span>
+<a name="line-399"></a> <span class="n">currentMarkerInfo</span><span class="p">,</span>
+<a name="line-400"></a> <span class="n">currentMarkerGroupState</span><span class="p">,</span>
+<a name="line-401"></a> <span class="n">getGlobalGroupState</span><span class="p">(),</span>
+<a name="line-402"></a> <span class="n">GPSItemInfoSorter</span><span class="o">::</span><span class="n">SortOptions</span><span class="p">(</span><span class="n">sortKey</span><span class="p">)))</span>
+<a name="line-403"></a> <span class="p">{</span>
+<a name="line-404"></a> <span class="n">bestMarkerInfo</span> <span class="o">=</span> <span class="n">currentMarkerInfo</span><span class="p">;</span>
+<a name="line-405"></a> <span class="n">bestMarkerGroupState</span> <span class="o">=</span> <span class="n">currentMarkerGroupState</span><span class="p">;</span>
+<a name="line-406"></a> <span class="p">}</span>
+<a name="line-407"></a> <span class="p">}</span>
+<a name="line-408"></a>
+<a name="line-409"></a> <span class="k">const</span> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">returnedMarker</span><span class="p">(</span><span class="n">tileIndex</span><span class="p">,</span> <span class="n">bestMarkerInfo</span><span class="p">.</span><span class="n">id</span><span class="p">);</span>
+<a name="line-410"></a>
+<a name="line-411"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="o">::</span><span class="n">fromValue</span><span class="p">(</span><span class="n">returnedMarker</span><span class="p">);</span>
+<a name="line-412"></a><span class="p">}</span>
+<a name="line-413"></a>
+<a name="line-414"></a><span class="cm">/**</span>
+<a name="line-415"></a><span class="cm"> * @brief This function finds the best representative marker from a group of markers. This is needed to display a thumbnail for a marker group.</span>
+<a name="line-416"></a><span class="cm"> * @param indices A list containing markers, obtained by getTileRepresentativeMarker.</span>
+<a name="line-417"></a><span class="cm"> * @param sortKey Sets the criteria for selecting the representative thumbnail, a combination of the SortOptions bits.</span>
+<a name="line-418"></a><span class="cm"> * @return Returns the internally used index of the marker.</span>
+<a name="line-419"></a><span class="cm"> */</span>
+<a name="line-420"></a><span class="n">QVariant</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">bestRepresentativeIndexFromList</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QVariant</span><span class="o">&gt;&amp;</span> <span class="n">indices</span><span class="p">,</span> <span class="k">const</span> <span class="kt">int</span> <span class="n">sortKey</span><span class="p">)</span>
+<a name="line-421"></a><span class="p">{</span>
+<a name="line-422"></a> <span class="k">if</span> <span class="p">(</span><span class="n">indices</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-423"></a> <span class="p">{</span>
+<a name="line-424"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="p">();</span>
+<a name="line-425"></a> <span class="p">}</span>
+<a name="line-426"></a>
+<a name="line-427"></a> <span class="k">const</span> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">firstIndex</span> <span class="o">=</span> <span class="n">indices</span><span class="p">.</span><span class="n">first</span><span class="p">().</span><span class="n">value</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">();</span>
+<a name="line-428"></a> <span class="n">GPSItemInfo</span> <span class="n">bestMarkerInfo</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">firstIndex</span><span class="p">.</span><span class="n">second</span><span class="p">);</span>
+<a name="line-429"></a> <span class="n">GeoGroupState</span> <span class="n">bestMarkerGroupState</span> <span class="o">=</span> <span class="n">getImageState</span><span class="p">(</span><span class="n">firstIndex</span><span class="p">.</span><span class="n">second</span><span class="p">);</span>
+<a name="line-430"></a> <span class="n">TileIndex</span> <span class="n">bestMarkerTileIndex</span> <span class="o">=</span> <span class="n">firstIndex</span><span class="p">.</span><span class="n">first</span><span class="p">;</span>
+<a name="line-431"></a>
+<a name="line-432"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">1</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">indices</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-433"></a> <span class="p">{</span>
+<a name="line-434"></a> <span class="k">const</span> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">indices</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">value</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">();</span>
+<a name="line-435"></a>
+<a name="line-436"></a> <span class="n">GPSItemInfo</span> <span class="n">currentMarkerInfo</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">.</span><span class="n">second</span><span class="p">);</span>
+<a name="line-437"></a> <span class="n">GeoGroupState</span> <span class="n">currentMarkerGroupState</span> <span class="o">=</span> <span class="n">getImageState</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">.</span><span class="n">second</span><span class="p">);</span>
+<a name="line-438"></a>
+<a name="line-439"></a> <span class="k">if</span> <span class="p">(</span><span class="n">GPSItemInfoSorter</span><span class="o">::</span><span class="n">fitsBetter</span><span class="p">(</span><span class="n">bestMarkerInfo</span><span class="p">,</span>
+<a name="line-440"></a> <span class="n">bestMarkerGroupState</span><span class="p">,</span>
+<a name="line-441"></a> <span class="n">currentMarkerInfo</span><span class="p">,</span>
+<a name="line-442"></a> <span class="n">currentMarkerGroupState</span><span class="p">,</span>
+<a name="line-443"></a> <span class="n">getGlobalGroupState</span><span class="p">(),</span>
+<a name="line-444"></a> <span class="n">GPSItemInfoSorter</span><span class="o">::</span><span class="n">SortOptions</span><span class="p">(</span><span class="n">sortKey</span><span class="p">)))</span>
+<a name="line-445"></a> <span class="p">{</span>
+<a name="line-446"></a> <span class="n">bestMarkerInfo</span> <span class="o">=</span> <span class="n">currentMarkerInfo</span><span class="p">;</span>
+<a name="line-447"></a> <span class="n">bestMarkerGroupState</span> <span class="o">=</span> <span class="n">currentMarkerGroupState</span><span class="p">;</span>
+<a name="line-448"></a> <span class="n">bestMarkerTileIndex</span> <span class="o">=</span> <span class="n">currentIndex</span><span class="p">.</span><span class="n">first</span><span class="p">;</span>
+<a name="line-449"></a> <span class="p">}</span>
+<a name="line-450"></a> <span class="p">}</span>
+<a name="line-451"></a>
+<a name="line-452"></a> <span class="k">const</span> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">returnedMarker</span><span class="p">(</span><span class="n">bestMarkerTileIndex</span><span class="p">,</span> <span class="n">bestMarkerInfo</span><span class="p">.</span><span class="n">id</span><span class="p">);</span>
<a name="line-453"></a>
-<a name="line-454"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">elementsData</span><span class="p">[</span><span class="n">j</span><span class="p">]);</span>
-<a name="line-455"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagTypeList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">TypeNewChild</span><span class="p">);</span>
-<a name="line-456"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxIndexList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">auxIndex</span><span class="p">);</span>
-<a name="line-457"></a>
-<a name="line-458"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="n">newTag</span> <span class="o">=</span> <span class="n">getTagAddress</span><span class="p">();</span>
-<a name="line-459"></a> <span class="n">newTag</span><span class="p">.</span><span class="n">last</span><span class="p">().</span><span class="n">tipName</span> <span class="o">=</span> <span class="n">addressElements</span><span class="p">[</span><span class="n">j</span><span class="p">];</span>
-<a name="line-460"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">newTags</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">newTag</span><span class="p">);</span>
-<a name="line-461"></a> <span class="p">}</span>
-<a name="line-462"></a> <span class="p">}</span>
-<a name="line-463"></a>
-<a name="line-464"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">))</span>
-<a name="line-465"></a> <span class="p">{</span>
-<a name="line-466"></a> <span class="n">addDataInTree</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">i</span><span class="p">,</span> <span class="n">addressElements</span><span class="p">,</span> <span class="n">elementsData</span><span class="p">);</span>
-<a name="line-467"></a> <span class="p">}</span>
-<a name="line-468"></a>
-<a name="line-469"></a> <span class="k">if</span> <span class="p">(</span><span class="n">newDataAdded</span><span class="p">)</span>
-<a name="line-470"></a> <span class="p">{</span>
-<a name="line-471"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagList</span><span class="p">.</span><span class="n">removeLast</span><span class="p">();</span>
-<a name="line-472"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagTypeList</span><span class="p">.</span><span class="n">removeLast</span><span class="p">();</span>
-<a name="line-473"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxIndexList</span><span class="p">.</span><span class="n">removeLast</span><span class="p">();</span>
-<a name="line-474"></a> <span class="p">}</span>
-<a name="line-475"></a> <span class="p">}</span>
-<a name="line-476"></a> <span class="p">}</span>
-<a name="line-477"></a>
-<a name="line-478"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-479"></a> <span class="p">{</span>
-<a name="line-480"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">);</span>
-<a name="line-481"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagTypeList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">TypeNewChild</span><span class="p">);</span>
-<a name="line-482"></a> <span class="n">addDataInTree</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">),</span> <span class="n">i</span><span class="o">+</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span> <span class="n">addressElements</span><span class="p">,</span> <span class="n">elementsData</span><span class="p">);</span>
-<a name="line-483"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagList</span><span class="p">.</span><span class="n">removeLast</span><span class="p">();</span>
-<a name="line-484"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagTypeList</span><span class="p">.</span><span class="n">removeLast</span><span class="p">();</span>
-<a name="line-485"></a> <span class="p">}</span>
-<a name="line-486"></a>
-<a name="line-487"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-488"></a> <span class="p">{</span>
-<a name="line-489"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">);</span>
-<a name="line-490"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagTypeList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">TypeChild</span><span class="p">);</span>
-<a name="line-491"></a> <span class="n">addDataInTree</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">),</span>
-<a name="line-492"></a> <span class="n">i</span> <span class="o">+</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span>
-<a name="line-493"></a> <span class="n">addressElements</span><span class="p">,</span>
-<a name="line-494"></a> <span class="n">elementsData</span><span class="p">);</span>
-<a name="line-495"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagList</span><span class="p">.</span><span class="n">removeLast</span><span class="p">();</span>
-<a name="line-496"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">auxTagTypeList</span><span class="p">.</span><span class="n">removeLast</span><span class="p">();</span>
-<a name="line-497"></a> <span class="p">}</span>
-<a name="line-498"></a><span class="p">}</span>
-<a name="line-499"></a>
-<a name="line-500"></a><span class="cm">/**</span>
-<a name="line-501"></a><span class="cm"> * Add new tags to tag tree. The function starts to scan the tree from root level. When it finds a spacer containing an address element</span>
-<a name="line-502"></a><span class="cm"> * , it looks to see if the address element is found in elements list. If it&#39;s found, a new tag is added.</span>
-<a name="line-503"></a><span class="cm"> * @param elements A list containing address elements. Example: {Country}, {City}...</span>
-<a name="line-504"></a><span class="cm"> * @param resultedData A list containing the name of each address element found in elements. Example: France, Paris...</span>
-<a name="line-505"></a><span class="cm"> * @return A list containing new tags</span>
-<a name="line-506"></a><span class="cm"> */</span>
-<a name="line-507"></a><span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">addNewData</span><span class="p">(</span><span class="n">QStringList</span><span class="o">&amp;</span> <span class="n">elements</span><span class="p">,</span> <span class="n">QStringList</span><span class="o">&amp;</span> <span class="n">resultedData</span><span class="p">)</span>
-<a name="line-508"></a><span class="p">{</span>
-<a name="line-509"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">newTags</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
-<a name="line-510"></a>
-<a name="line-511"></a> <span class="c1">//elements contains address elements {Country}, {City}, ...</span>
-<a name="line-512"></a> <span class="c1">//resultedData contains RG data (example Spain,Barcelona)</span>
-<a name="line-513"></a>
-<a name="line-514"></a> <span class="n">addDataInTree</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">elements</span><span class="p">,</span> <span class="n">resultedData</span><span class="p">);</span>
-<a name="line-515"></a>
-<a name="line-516"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">newTags</span><span class="p">;</span>
-<a name="line-517"></a><span class="p">}</span>
-<a name="line-518"></a>
-<a name="line-519"></a><span class="kt">int</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">columnCount</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">parent</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-520"></a><span class="p">{</span>
-<a name="line-521"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span> <span class="c1">//static_cast&lt;TreeBranch*&gt;(parent.internalPointer());</span>
-<a name="line-522"></a>
-<a name="line-523"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">parentBranch</span><span class="p">)</span>
-<a name="line-524"></a> <span class="p">{</span>
-<a name="line-525"></a> <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-526"></a> <span class="p">}</span>
+<a name="line-454"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="o">::</span><span class="n">fromValue</span><span class="p">(</span><span class="n">returnedMarker</span><span class="p">);</span>
+<a name="line-455"></a><span class="p">}</span>
+<a name="line-456"></a>
+<a name="line-457"></a><span class="cm">/**</span>
+<a name="line-458"></a><span class="cm"> * @brief This function retrieves the thumbnail for an index.</span>
+<a name="line-459"></a><span class="cm"> * @param index The marker&#39;s index.</span>
+<a name="line-460"></a><span class="cm"> * @param size The size of the thumbnail.</span>
+<a name="line-461"></a><span class="cm"> * @return If the thumbnail has been loaded in the ThumbnailLoadThread instance, it is returned.</span>
+<a name="line-462"></a><span class="cm"> * If not, a QPixmap is returned and ThumbnailLoadThread&#39;s signal named signalThumbnailLoaded is emitted when the thumbnail becomes available.</span>
+<a name="line-463"></a><span class="cm"> */</span>
+<a name="line-464"></a><span class="n">QPixmap</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">pixmapFromRepresentativeIndex</span><span class="p">(</span><span class="k">const</span> <span class="n">QVariant</span><span class="o">&amp;</span> <span class="n">index</span><span class="p">,</span> <span class="k">const</span> <span class="n">QSize</span><span class="o">&amp;</span> <span class="n">size</span><span class="p">)</span>
+<a name="line-465"></a><span class="p">{</span>
+<a name="line-466"></a> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">indexForPixmap</span> <span class="o">=</span> <span class="n">index</span><span class="p">.</span><span class="n">value</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">();</span>
+<a name="line-467"></a>
+<a name="line-468"></a> <span class="n">QPixmap</span> <span class="n">thumbnail</span><span class="p">;</span>
+<a name="line-469"></a> <span class="n">ItemInfo</span> <span class="nf">info</span><span class="p">(</span><span class="n">indexForPixmap</span><span class="p">.</span><span class="n">second</span><span class="p">);</span>
+<a name="line-470"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">thumbnailMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">id</span><span class="p">(),</span> <span class="n">index</span><span class="p">);</span>
+<a name="line-471"></a>
+<a name="line-472"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">thumbnailLoadThread</span><span class="o">-&gt;</span><span class="n">find</span><span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">thumbnailIdentifier</span><span class="p">(),</span> <span class="n">thumbnail</span><span class="p">,</span> <span class="n">qMax</span><span class="p">(</span><span class="n">size</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">+</span> <span class="mi">2</span><span class="p">,</span> <span class="n">size</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">+</span> <span class="mi">2</span><span class="p">)))</span>
+<a name="line-473"></a> <span class="p">{</span>
+<a name="line-474"></a> <span class="c1">// digikam returns thumbnails with a border around them,</span>
+<a name="line-475"></a> <span class="c1">// but geolocation interface expects them without a border</span>
+<a name="line-476"></a>
+<a name="line-477"></a> <span class="k">return</span> <span class="n">thumbnail</span><span class="p">.</span><span class="n">copy</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">thumbnail</span><span class="p">.</span><span class="n">size</span><span class="p">().</span><span class="n">width</span><span class="p">()</span> <span class="o">-</span> <span class="mi">2</span><span class="p">,</span> <span class="n">thumbnail</span><span class="p">.</span><span class="n">size</span><span class="p">().</span><span class="n">height</span><span class="p">()</span> <span class="o">-</span> <span class="mi">2</span><span class="p">);</span>
+<a name="line-478"></a> <span class="p">}</span>
+<a name="line-479"></a> <span class="k">else</span>
+<a name="line-480"></a> <span class="p">{</span>
+<a name="line-481"></a> <span class="k">return</span> <span class="n">QPixmap</span><span class="p">();</span>
+<a name="line-482"></a> <span class="p">}</span>
+<a name="line-483"></a><span class="p">}</span>
+<a name="line-484"></a>
+<a name="line-485"></a><span class="cm">/**</span>
+<a name="line-486"></a><span class="cm"> * @brief This function compares two marker indices.</span>
+<a name="line-487"></a><span class="cm"> */</span>
+<a name="line-488"></a><span class="kt">bool</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">indicesEqual</span><span class="p">(</span><span class="k">const</span> <span class="n">QVariant</span><span class="o">&amp;</span> <span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">QVariant</span><span class="o">&amp;</span> <span class="n">b</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-489"></a><span class="p">{</span>
+<a name="line-490"></a> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">firstIndex</span> <span class="o">=</span> <span class="n">a</span><span class="p">.</span><span class="n">value</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">();</span>
+<a name="line-491"></a> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">secondIndex</span> <span class="o">=</span> <span class="n">b</span><span class="p">.</span><span class="n">value</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">();</span>
+<a name="line-492"></a>
+<a name="line-493"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">aIndicesList</span> <span class="o">=</span> <span class="n">firstIndex</span><span class="p">.</span><span class="n">first</span><span class="p">.</span><span class="n">toIntList</span><span class="p">();</span>
+<a name="line-494"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">bIndicesList</span> <span class="o">=</span> <span class="n">secondIndex</span><span class="p">.</span><span class="n">first</span><span class="p">.</span><span class="n">toIntList</span><span class="p">();</span>
+<a name="line-495"></a>
+<a name="line-496"></a> <span class="k">if</span> <span class="p">((</span><span class="n">firstIndex</span><span class="p">.</span><span class="n">second</span> <span class="o">==</span> <span class="n">secondIndex</span><span class="p">.</span><span class="n">second</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">aIndicesList</span> <span class="o">==</span> <span class="n">bIndicesList</span><span class="p">))</span>
+<a name="line-497"></a> <span class="p">{</span>
+<a name="line-498"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-499"></a> <span class="p">}</span>
+<a name="line-500"></a>
+<a name="line-501"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-502"></a><span class="p">}</span>
+<a name="line-503"></a>
+<a name="line-504"></a><span class="n">GeoGroupState</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">getTileGroupState</span><span class="p">(</span><span class="k">const</span> <span class="n">TileIndex</span><span class="o">&amp;</span> <span class="n">tileIndex</span><span class="p">)</span>
+<a name="line-505"></a><span class="p">{</span>
+<a name="line-506"></a> <span class="k">const</span> <span class="kt">bool</span> <span class="n">haveGlobalSelection</span> <span class="o">=</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mapGlobalGroupState</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">FilteredPositiveMask</span> <span class="o">|</span> <span class="n">RegionSelectedMask</span><span class="p">));</span>
+<a name="line-507"></a>
+<a name="line-508"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">haveGlobalSelection</span><span class="p">)</span>
+<a name="line-509"></a> <span class="p">{</span>
+<a name="line-510"></a> <span class="k">return</span> <span class="n">SelectedNone</span><span class="p">;</span>
+<a name="line-511"></a> <span class="p">}</span>
+<a name="line-512"></a>
+<a name="line-513"></a> <span class="c1">/// @todo Store this state in the tiles!</span>
+<a name="line-514"></a>
+<a name="line-515"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="k">const</span> <span class="n">tile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">getTile</span><span class="p">(</span><span class="n">tileIndex</span><span class="p">,</span> <span class="nb">true</span><span class="p">));</span>
+<a name="line-516"></a> <span class="n">GroupStateComputer</span> <span class="n">tileStateComputer</span><span class="p">;</span>
+<a name="line-517"></a>
+<a name="line-518"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">tile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-519"></a> <span class="p">{</span>
+<a name="line-520"></a> <span class="k">const</span> <span class="n">GeoGroupState</span> <span class="n">imageState</span> <span class="o">=</span> <span class="n">getImageState</span><span class="p">(</span><span class="n">tile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">));</span>
+<a name="line-521"></a>
+<a name="line-522"></a> <span class="n">tileStateComputer</span><span class="p">.</span><span class="n">addState</span><span class="p">(</span><span class="n">imageState</span><span class="p">);</span>
+<a name="line-523"></a> <span class="p">}</span>
+<a name="line-524"></a>
+<a name="line-525"></a> <span class="k">return</span> <span class="n">tileStateComputer</span><span class="p">.</span><span class="n">getState</span><span class="p">();</span>
+<a name="line-526"></a><span class="p">}</span>
<a name="line-527"></a>
-<a name="line-528"></a> <span class="k">if</span> <span class="p">(</span><span class="n">parentBranch</span> <span class="o">&amp;&amp;</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeSpacer</span><span class="p">)</span>
-<a name="line-529"></a> <span class="p">{</span>
-<a name="line-530"></a> <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-531"></a> <span class="p">}</span>
-<a name="line-532"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">parentBranch</span> <span class="o">&amp;&amp;</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">)</span>
-<a name="line-533"></a> <span class="p">{</span>
-<a name="line-534"></a> <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-535"></a> <span class="p">}</span>
-<a name="line-536"></a>
-<a name="line-537"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">columnCount</span><span class="p">(</span><span class="n">toSourceIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">));</span>
-<a name="line-538"></a><span class="p">}</span>
+<a name="line-528"></a><span class="cm">/**</span>
+<a name="line-529"></a><span class="cm"> * @brief The marker data is returned from the database in batches. This function takes and unites the batches.</span>
+<a name="line-530"></a><span class="cm"> */</span>
+<a name="line-531"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">slotMapImagesJobData</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">ItemListerRecord</span><span class="o">&gt;&amp;</span> <span class="n">records</span><span class="p">)</span>
+<a name="line-532"></a><span class="p">{</span>
+<a name="line-533"></a> <span class="k">if</span> <span class="p">(</span><span class="n">records</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-534"></a> <span class="p">{</span>
+<a name="line-535"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-536"></a> <span class="p">}</span>
+<a name="line-537"></a>
+<a name="line-538"></a> <span class="n">Private</span><span class="o">::</span><span class="n">InternalJobs</span><span class="o">*</span> <span class="n">internalJob</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-539"></a>
-<a name="line-540"></a><span class="kt">bool</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">setData</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="cm">/*index*/</span><span class="p">,</span> <span class="k">const</span> <span class="n">QVariant</span><span class="o">&amp;</span> <span class="cm">/*value*/</span><span class="p">,</span> <span class="kt">int</span> <span class="cm">/*role*/</span><span class="p">)</span>
-<a name="line-541"></a><span class="p">{</span>
-<a name="line-542"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-543"></a><span class="p">}</span>
-<a name="line-544"></a>
-<a name="line-545"></a><span class="n">QVariant</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">data</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">index</span><span class="p">,</span> <span class="kt">int</span> <span class="n">role</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-546"></a><span class="p">{</span>
-<a name="line-547"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">index</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
-<a name="line-548"></a> <span class="p">{</span>
-<a name="line-549"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="p">();</span>
-<a name="line-550"></a> <span class="p">}</span>
-<a name="line-551"></a>
-<a name="line-552"></a><span class="cm">/*</span>
-<a name="line-553"></a><span class="cm"> static_cast&lt;TreeBranch*&gt;(index.internalPointer());</span>
-<a name="line-554"></a><span class="cm">*/</span>
-<a name="line-555"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">treeBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
-<a name="line-556"></a>
-<a name="line-557"></a> <span class="k">if</span> <span class="p">((</span><span class="o">!</span><span class="n">treeBranch</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">treeBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeChild</span><span class="p">))</span>
-<a name="line-558"></a> <span class="p">{</span>
-<a name="line-559"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">(</span><span class="n">toSourceIndex</span><span class="p">(</span><span class="n">index</span><span class="p">),</span> <span class="n">role</span><span class="p">);</span>
-<a name="line-560"></a> <span class="p">}</span>
-<a name="line-561"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">treeBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeSpacer</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
-<a name="line-562"></a> <span class="p">{</span>
-<a name="line-563"></a> <span class="k">return</span> <span class="n">i18n</span><span class="p">(</span><span class="n">treeBranch</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-564"></a> <span class="p">}</span>
-<a name="line-565"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">treeBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeSpacer</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">ForegroundRole</span><span class="p">))</span>
-<a name="line-566"></a> <span class="p">{</span>
-<a name="line-567"></a> <span class="k">return</span> <span class="n">QColor</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">red</span><span class="p">);</span>
-<a name="line-568"></a> <span class="p">}</span>
-<a name="line-569"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">treeBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DisplayRole</span><span class="p">))</span>
-<a name="line-570"></a> <span class="p">{</span>
-<a name="line-571"></a> <span class="k">return</span> <span class="n">treeBranch</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">;</span>
-<a name="line-572"></a> <span class="p">}</span>
-<a name="line-573"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">treeBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">ForegroundRole</span><span class="p">))</span>
-<a name="line-574"></a> <span class="p">{</span>
-<a name="line-575"></a> <span class="k">return</span> <span class="n">QColor</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">green</span><span class="p">);</span>
-<a name="line-576"></a> <span class="p">}</span>
-<a name="line-577"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">treeBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">role</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">ToolTipRole</span><span class="p">))</span>
-<a name="line-578"></a> <span class="p">{</span>
-<a name="line-579"></a> <span class="k">return</span> <span class="n">i18n</span><span class="p">(</span><span class="n">treeBranch</span><span class="o">-&gt;</span><span class="n">help</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">().</span><span class="n">constData</span><span class="p">());</span>
-<a name="line-580"></a> <span class="p">}</span>
-<a name="line-581"></a>
-<a name="line-582"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="p">();</span>
-<a name="line-583"></a><span class="p">}</span>
-<a name="line-584"></a>
-<a name="line-585"></a><span class="n">QModelIndex</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">index</span><span class="p">(</span><span class="kt">int</span> <span class="n">row</span><span class="p">,</span> <span class="kt">int</span> <span class="n">column</span><span class="p">,</span> <span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">parent</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-586"></a><span class="p">{</span>
-<a name="line-587"></a> <span class="k">if</span> <span class="p">((</span><span class="n">column</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">row</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">))</span>
-<a name="line-588"></a> <span class="p">{</span>
-<a name="line-589"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-540"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-541"></a> <span class="p">{</span>
+<a name="line-542"></a> <span class="k">if</span> <span class="p">(</span><span class="n">sender</span><span class="p">()</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">jobThread</span><span class="p">)</span>
+<a name="line-543"></a> <span class="p">{</span>
+<a name="line-544"></a> <span class="c1">/// @todo Is this really safe?</span>
+<a name="line-545"></a>
+<a name="line-546"></a> <span class="n">internalJob</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+<a name="line-547"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-548"></a> <span class="p">}</span>
+<a name="line-549"></a> <span class="p">}</span>
+<a name="line-550"></a>
+<a name="line-551"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">internalJob</span><span class="p">)</span>
+<a name="line-552"></a> <span class="p">{</span>
+<a name="line-553"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-554"></a> <span class="p">}</span>
+<a name="line-555"></a>
+<a name="line-556"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">ItemListerRecord</span> <span class="o">&amp;</span><span class="n">record</span><span class="p">,</span> <span class="n">records</span><span class="p">)</span>
+<a name="line-557"></a> <span class="p">{</span>
+<a name="line-558"></a> <span class="k">if</span> <span class="p">(</span><span class="n">record</span><span class="p">.</span><span class="n">extraValues</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span>
+<a name="line-559"></a> <span class="p">{</span>
+<a name="line-560"></a> <span class="c1">// skip info without coordinates</span>
+<a name="line-561"></a>
+<a name="line-562"></a> <span class="k">continue</span><span class="p">;</span>
+<a name="line-563"></a> <span class="p">}</span>
+<a name="line-564"></a>
+<a name="line-565"></a> <span class="n">GPSItemInfo</span> <span class="n">entry</span><span class="p">;</span>
+<a name="line-566"></a>
+<a name="line-567"></a> <span class="n">entry</span><span class="p">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">record</span><span class="p">.</span><span class="n">imageID</span><span class="p">;</span>
+<a name="line-568"></a> <span class="n">entry</span><span class="p">.</span><span class="n">rating</span> <span class="o">=</span> <span class="n">record</span><span class="p">.</span><span class="n">rating</span><span class="p">;</span>
+<a name="line-569"></a> <span class="n">entry</span><span class="p">.</span><span class="n">dateTime</span> <span class="o">=</span> <span class="n">record</span><span class="p">.</span><span class="n">creationDate</span><span class="p">;</span>
+<a name="line-570"></a> <span class="n">entry</span><span class="p">.</span><span class="n">coordinates</span><span class="p">.</span><span class="n">setLatLon</span><span class="p">(</span><span class="n">record</span><span class="p">.</span><span class="n">extraValues</span><span class="p">.</span><span class="n">first</span><span class="p">().</span><span class="n">toDouble</span><span class="p">(),</span> <span class="n">record</span><span class="p">.</span><span class="n">extraValues</span><span class="p">.</span><span class="n">last</span><span class="p">().</span><span class="n">toDouble</span><span class="p">());</span>
+<a name="line-571"></a>
+<a name="line-572"></a> <span class="n">internalJob</span><span class="o">-&gt;</span><span class="n">dataFromDatabase</span> <span class="o">&lt;&lt;</span> <span class="n">entry</span><span class="p">;</span>
+<a name="line-573"></a> <span class="p">}</span>
+<a name="line-574"></a><span class="p">}</span>
+<a name="line-575"></a>
+<a name="line-576"></a><span class="cm">/**</span>
+<a name="line-577"></a><span class="cm"> * @brief Now, all the marker data has been retrieved from the database. Here, the markers are sorted into tiles.</span>
+<a name="line-578"></a><span class="cm"> */</span>
+<a name="line-579"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">slotMapImagesJobResult</span><span class="p">()</span>
+<a name="line-580"></a><span class="p">{</span>
+<a name="line-581"></a> <span class="kt">int</span> <span class="n">foundIndex</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+<a name="line-582"></a>
+<a name="line-583"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-584"></a> <span class="p">{</span>
+<a name="line-585"></a> <span class="k">if</span> <span class="p">(</span><span class="n">sender</span><span class="p">()</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">jobThread</span><span class="p">)</span>
+<a name="line-586"></a> <span class="p">{</span>
+<a name="line-587"></a> <span class="n">foundIndex</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
+<a name="line-588"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-589"></a> <span class="p">}</span>
<a name="line-590"></a> <span class="p">}</span>
-<a name="line-591"></a><span class="cm">/*</span>
-<a name="line-592"></a><span class="cm"> if (parent.isValid())</span>
-<a name="line-593"></a><span class="cm"> {</span>
-<a name="line-594"></a><span class="cm"> parentBranch = static_cast&lt;TreeBranch*&gt;(parent.internalPointer());</span>
-<a name="line-595"></a><span class="cm"> }</span>
-<a name="line-596"></a><span class="cm">*/</span>
-<a name="line-597"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span><span class="c1">//d-&gt;rootTag;</span>
+<a name="line-591"></a>
+<a name="line-592"></a> <span class="k">if</span> <span class="p">(</span><span class="n">foundIndex</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-593"></a> <span class="p">{</span>
+<a name="line-594"></a> <span class="c1">// this should not happen, but ok...</span>
+<a name="line-595"></a>
+<a name="line-596"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-597"></a> <span class="p">}</span>
<a name="line-598"></a>
-<a name="line-599"></a> <span class="c1">// this should not happen!</span>
-<a name="line-600"></a>
-<a name="line-601"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">parentBranch</span><span class="p">)</span>
-<a name="line-602"></a> <span class="p">{</span>
-<a name="line-603"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-604"></a> <span class="p">}</span>
+<a name="line-599"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">foundIndex</span><span class="p">).</span><span class="n">jobThread</span><span class="o">-&gt;</span><span class="n">hasErrors</span><span class="p">())</span>
+<a name="line-600"></a> <span class="p">{</span>
+<a name="line-601"></a> <span class="k">const</span> <span class="n">QString</span> <span class="o">&amp;</span><span class="n">err</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">foundIndex</span><span class="p">).</span><span class="n">jobThread</span><span class="o">-&gt;</span><span class="n">errorsList</span><span class="p">().</span><span class="n">first</span><span class="p">();</span>
+<a name="line-602"></a>
+<a name="line-603"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Failed to list images in selected area: &quot;</span>
+<a name="line-604"></a> <span class="o">&lt;&lt;</span> <span class="n">err</span><span class="p">;</span>
<a name="line-605"></a>
-<a name="line-606"></a> <span class="k">if</span> <span class="p">(</span><span class="n">row</span> <span class="o">&lt;</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">())</span>
-<a name="line-607"></a> <span class="p">{</span>
-<a name="line-608"></a> <span class="k">return</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">column</span><span class="p">,</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">row</span><span class="p">]);</span>
-<a name="line-609"></a> <span class="p">}</span>
-<a name="line-610"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">row</span> <span class="o">&gt;=</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">())</span> <span class="o">&amp;&amp;</span>
-<a name="line-611"></a> <span class="p">(</span><span class="n">row</span> <span class="o">&lt;</span> <span class="p">(</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">())))</span>
-<a name="line-612"></a> <span class="p">{</span>
-<a name="line-613"></a> <span class="k">return</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">column</span><span class="p">,</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">row</span><span class="o">-</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()]);</span>
-<a name="line-614"></a> <span class="p">}</span>
+<a name="line-606"></a> <span class="c1">// Pop-up a message about the error.</span>
+<a name="line-607"></a>
+<a name="line-608"></a> <span class="n">DNotificationWrapper</span><span class="p">(</span><span class="n">QString</span><span class="p">(),</span> <span class="n">err</span><span class="p">,</span>
+<a name="line-609"></a> <span class="n">DigikamApp</span><span class="o">::</span><span class="n">instance</span><span class="p">(),</span> <span class="n">DigikamApp</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">windowTitle</span><span class="p">());</span>
+<a name="line-610"></a> <span class="p">}</span>
+<a name="line-611"></a>
+<a name="line-612"></a> <span class="c1">// get the results from the job:</span>
+<a name="line-613"></a>
+<a name="line-614"></a> <span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">GPSItemInfo</span><span class="o">&gt;</span> <span class="n">returnedItemInfo</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">foundIndex</span><span class="p">).</span><span class="n">dataFromDatabase</span><span class="p">;</span>
<a name="line-615"></a>
-<a name="line-616"></a> <span class="k">return</span> <span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">row</span> <span class="o">-</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span>
-<a name="line-617"></a> <span class="n">column</span><span class="p">,</span> <span class="n">toSourceIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">)));</span>
-<a name="line-618"></a><span class="p">}</span>
-<a name="line-619"></a>
-<a name="line-620"></a><span class="n">QModelIndex</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">parent</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">index</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-621"></a><span class="p">{</span>
-<a name="line-622"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">currentBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">index</span><span class="p">);</span> <span class="c1">// static_cast&lt;TreeBranch*&gt;(index.internalPointer());</span>
-<a name="line-623"></a>
-<a name="line-624"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">currentBranch</span><span class="p">)</span>
-<a name="line-625"></a> <span class="p">{</span>
-<a name="line-626"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-627"></a> <span class="p">}</span>
-<a name="line-628"></a>
-<a name="line-629"></a> <span class="k">if</span> <span class="p">((</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeSpacer</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">))</span>
-<a name="line-630"></a> <span class="p">{</span>
-<a name="line-631"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentBranch</span> <span class="o">=</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">;</span>
-<a name="line-632"></a>
-<a name="line-633"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">parentBranch</span><span class="p">)</span>
-<a name="line-634"></a> <span class="p">{</span>
-<a name="line-635"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-636"></a> <span class="p">}</span>
-<a name="line-637"></a>
-<a name="line-638"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">gParentBranch</span> <span class="o">=</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">;</span>
+<a name="line-616"></a> <span class="c1">/// @todo Currently, we ignore the wanted level and just add the images</span>
+<a name="line-617"></a><span class="cm">/*</span>
+<a name="line-618"></a><span class="cm"> const int wantedLevel = d-&gt;jobs.at(foundIndex).level;</span>
+<a name="line-619"></a><span class="cm">*/</span>
+<a name="line-620"></a> <span class="c1">// remove the finished job</span>
+<a name="line-621"></a>
+<a name="line-622"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">[</span><span class="n">foundIndex</span><span class="p">].</span><span class="n">jobThread</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">();</span>
+<a name="line-623"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">[</span><span class="n">foundIndex</span><span class="p">].</span><span class="n">jobThread</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-624"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">.</span><span class="n">removeAt</span><span class="p">(</span><span class="n">foundIndex</span><span class="p">);</span>
+<a name="line-625"></a>
+<a name="line-626"></a> <span class="k">if</span> <span class="p">(</span><span class="n">returnedItemInfo</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-627"></a> <span class="p">{</span>
+<a name="line-628"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-629"></a> <span class="p">}</span>
+<a name="line-630"></a>
+<a name="line-631"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">returnedItemInfo</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-632"></a> <span class="p">{</span>
+<a name="line-633"></a> <span class="k">const</span> <span class="n">GPSItemInfo</span> <span class="n">currentItemInfo</span> <span class="o">=</span> <span class="n">returnedItemInfo</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
+<a name="line-634"></a>
+<a name="line-635"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">currentItemInfo</span><span class="p">.</span><span class="n">coordinates</span><span class="p">.</span><span class="n">hasCoordinates</span><span class="p">())</span>
+<a name="line-636"></a> <span class="p">{</span>
+<a name="line-637"></a> <span class="k">continue</span><span class="p">;</span>
+<a name="line-638"></a> <span class="p">}</span>
<a name="line-639"></a>
-<a name="line-640"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">gParentBranch</span><span class="p">)</span>
-<a name="line-641"></a> <span class="p">{</span>
-<a name="line-642"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-643"></a> <span class="p">}</span>
-<a name="line-644"></a>
-<a name="line-645"></a> <span class="k">if</span> <span class="p">(</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeSpacer</span><span class="p">)</span>
-<a name="line-646"></a> <span class="p">{</span>
-<a name="line-647"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">parentRow</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">parentRow</span> <span class="o">&lt;</span> <span class="n">gParentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">parentRow</span><span class="p">)</span>
-<a name="line-648"></a> <span class="p">{</span>
-<a name="line-649"></a> <span class="k">if</span> <span class="p">(</span><span class="n">gParentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">parentRow</span><span class="p">]</span> <span class="o">==</span> <span class="n">parentBranch</span><span class="p">)</span>
-<a name="line-650"></a> <span class="p">{</span>
-<a name="line-651"></a> <span class="k">return</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">parentRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">parentBranch</span><span class="p">);</span>
-<a name="line-652"></a> <span class="p">}</span>
-<a name="line-653"></a> <span class="p">}</span>
-<a name="line-654"></a>
-<a name="line-655"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-656"></a> <span class="p">}</span>
-<a name="line-657"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">)</span>
-<a name="line-658"></a> <span class="p">{</span>
-<a name="line-659"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">parentRow</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">parentRow</span> <span class="o">&lt;</span> <span class="n">gParentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">parentRow</span><span class="p">)</span>
-<a name="line-660"></a> <span class="p">{</span>
-<a name="line-661"></a> <span class="k">if</span> <span class="p">(</span><span class="n">gParentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">parentRow</span><span class="p">]</span> <span class="o">==</span> <span class="n">parentBranch</span><span class="p">)</span>
-<a name="line-662"></a> <span class="p">{</span>
-<a name="line-663"></a> <span class="k">return</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">parentRow</span><span class="o">+</span><span class="n">gParentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span> <span class="mi">0</span><span class="p">,</span> <span class="n">parentBranch</span><span class="p">);</span>
-<a name="line-664"></a> <span class="p">}</span>
-<a name="line-665"></a> <span class="p">}</span>
-<a name="line-666"></a> <span class="p">}</span>
-<a name="line-667"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeChild</span><span class="p">)</span>
-<a name="line-668"></a> <span class="p">{</span>
-<a name="line-669"></a> <span class="c1">// TODO: don&#39;t we have a function for this?</span>
-<a name="line-670"></a>
-<a name="line-671"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">parentRow</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">parentRow</span> <span class="o">&lt;</span> <span class="n">gParentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">parentRow</span><span class="p">)</span>
-<a name="line-672"></a> <span class="p">{</span>
-<a name="line-673"></a> <span class="k">if</span> <span class="p">(</span><span class="n">gParentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">[</span><span class="n">parentRow</span><span class="p">]</span> <span class="o">==</span> <span class="n">parentBranch</span><span class="p">)</span>
-<a name="line-674"></a> <span class="p">{</span>
-<a name="line-675"></a> <span class="k">return</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">parentRow</span> <span class="o">+</span> <span class="n">gParentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">gParentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span>
-<a name="line-676"></a> <span class="mi">0</span><span class="p">,</span> <span class="n">parentBranch</span><span class="p">);</span>
-<a name="line-677"></a> <span class="p">}</span>
-<a name="line-678"></a> <span class="p">}</span>
-<a name="line-679"></a>
-<a name="line-680"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-681"></a> <span class="p">}</span>
-<a name="line-682"></a> <span class="p">}</span>
-<a name="line-683"></a>
-<a name="line-684"></a> <span class="k">return</span> <span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">(</span><span class="n">toSourceIndex</span><span class="p">(</span><span class="n">index</span><span class="p">)));</span>
-<a name="line-685"></a><span class="p">}</span>
-<a name="line-686"></a>
-<a name="line-687"></a><span class="kt">int</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">rowCount</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">parent</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-688"></a><span class="p">{</span>
-<a name="line-689"></a><span class="cm">/*</span>
-<a name="line-690"></a><span class="cm"> parent.isValid() ? static_cast&lt;TreeBranch*&gt;(parent.internalPointer()) : d-&gt;rootTag;</span>
-<a name="line-691"></a><span class="cm">*/</span>
-<a name="line-692"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
-<a name="line-693"></a> <span class="kt">int</span> <span class="n">myRowCount</span> <span class="o">=</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">();</span>
-<a name="line-694"></a>
-<a name="line-695"></a> <span class="c1">// TODO: we don&#39;t know whether the oldChildren have been set up, therefore query the source model</span>
-<a name="line-696"></a>
-<a name="line-697"></a> <span class="k">if</span> <span class="p">(</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeChild</span><span class="p">)</span>
-<a name="line-698"></a> <span class="p">{</span>
-<a name="line-699"></a> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">sourceIndex</span> <span class="o">=</span> <span class="n">toSourceIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
-<a name="line-700"></a> <span class="n">myRowCount</span> <span class="o">+=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">(</span><span class="n">sourceIndex</span><span class="p">);</span>
-<a name="line-701"></a> <span class="p">}</span>
-<a name="line-702"></a>
-<a name="line-703"></a> <span class="k">return</span> <span class="n">myRowCount</span><span class="p">;</span>
-<a name="line-704"></a><span class="p">}</span>
-<a name="line-705"></a>
-<a name="line-706"></a><span class="kt">bool</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">setHeaderData</span><span class="p">(</span><span class="kt">int</span> <span class="cm">/*section*/</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Orientation</span> <span class="cm">/*orientation*/</span><span class="p">,</span> <span class="k">const</span> <span class="n">QVariant</span><span class="o">&amp;</span> <span class="cm">/*value*/</span><span class="p">,</span> <span class="kt">int</span> <span class="cm">/*role*/</span><span class="p">)</span>
-<a name="line-707"></a><span class="p">{</span>
-<a name="line-708"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-709"></a><span class="p">}</span>
+<a name="line-640"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">currentItemInfo</span><span class="p">.</span><span class="n">id</span><span class="p">,</span> <span class="n">currentItemInfo</span><span class="p">);</span>
+<a name="line-641"></a>
+<a name="line-642"></a> <span class="k">const</span> <span class="n">TileIndex</span> <span class="n">markerTileIndex</span> <span class="o">=</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">fromCoordinates</span><span class="p">(</span><span class="n">currentItemInfo</span><span class="p">.</span><span class="n">coordinates</span><span class="p">,</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">MaxLevel</span><span class="p">);</span>
+<a name="line-643"></a> <span class="n">addMarkerToTileAndChildren</span><span class="p">(</span><span class="n">currentItemInfo</span><span class="p">.</span><span class="n">id</span><span class="p">,</span> <span class="n">markerTileIndex</span><span class="p">,</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">rootTile</span><span class="p">()),</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-644"></a> <span class="p">}</span>
+<a name="line-645"></a>
+<a name="line-646"></a> <span class="n">emit</span> <span class="n">signalTilesOrSelectionChanged</span><span class="p">();</span>
+<a name="line-647"></a><span class="p">}</span>
+<a name="line-648"></a>
+<a name="line-649"></a><span class="cm">/**</span>
+<a name="line-650"></a><span class="cm"> * @brief Because of a call to pixmapFromRepresentativeIndex, some thumbnails are not yet loaded at the time of requesting.</span>
+<a name="line-651"></a><span class="cm"> * When each thumbnail loads, this slot is called and emits a signal that announces the map that the thumbnail is available.</span>
+<a name="line-652"></a><span class="cm"> */</span>
+<a name="line-653"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">slotThumbnailLoaded</span><span class="p">(</span><span class="k">const</span> <span class="n">LoadingDescription</span><span class="o">&amp;</span> <span class="n">loadingDescription</span><span class="p">,</span> <span class="k">const</span> <span class="n">QPixmap</span><span class="o">&amp;</span> <span class="n">thumbnail</span><span class="p">)</span>
+<a name="line-654"></a><span class="p">{</span>
+<a name="line-655"></a> <span class="n">QVariant</span> <span class="n">index</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">thumbnailMap</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">loadingDescription</span><span class="p">.</span><span class="n">thumbnailIdentifier</span><span class="p">().</span><span class="n">id</span><span class="p">);</span>
+<a name="line-656"></a><span class="cm">/*</span>
+<a name="line-657"></a><span class="cm"> QPair&lt;TileIndex, int&gt; indexForPixmap =</span>
+<a name="line-658"></a><span class="cm"> index.value&lt;QPair&lt;TileIndex, int&gt; &gt;();</span>
+<a name="line-659"></a><span class="cm">*/</span>
+<a name="line-660"></a> <span class="n">emit</span> <span class="nf">signalThumbnailAvailableForIndex</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">thumbnail</span><span class="p">.</span><span class="n">copy</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">thumbnail</span><span class="p">.</span><span class="n">size</span><span class="p">().</span><span class="n">width</span><span class="p">()</span> <span class="o">-</span> <span class="mi">2</span><span class="p">,</span> <span class="n">thumbnail</span><span class="p">.</span><span class="n">size</span><span class="p">().</span><span class="n">height</span><span class="p">()</span> <span class="o">-</span> <span class="mi">2</span><span class="p">));</span>
+<a name="line-661"></a><span class="p">}</span>
+<a name="line-662"></a>
+<a name="line-663"></a><span class="cm">/**</span>
+<a name="line-664"></a><span class="cm"> * @brief Sets the map active/inactive</span>
+<a name="line-665"></a><span class="cm"> * @param state New state of the map, true means active.</span>
+<a name="line-666"></a><span class="cm"> */</span>
+<a name="line-667"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">setActive</span><span class="p">(</span><span class="k">const</span> <span class="kt">bool</span> <span class="n">state</span><span class="p">)</span>
+<a name="line-668"></a><span class="p">{</span>
+<a name="line-669"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">activeState</span> <span class="o">=</span> <span class="n">state</span><span class="p">;</span>
+<a name="line-670"></a><span class="p">}</span>
+<a name="line-671"></a>
+<a name="line-672"></a><span class="n">AbstractMarkerTiler</span><span class="o">::</span><span class="n">Tile</span><span class="o">*</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">tileNew</span><span class="p">()</span>
+<a name="line-673"></a><span class="p">{</span>
+<a name="line-674"></a> <span class="k">return</span> <span class="k">new</span> <span class="n">MyTile</span><span class="p">();</span>
+<a name="line-675"></a><span class="p">}</span>
+<a name="line-676"></a>
+<a name="line-677"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">tileDelete</span><span class="p">(</span><span class="n">AbstractMarkerTiler</span><span class="o">::</span><span class="n">Tile</span><span class="o">*</span> <span class="k">const</span> <span class="n">tile</span><span class="p">)</span>
+<a name="line-678"></a><span class="p">{</span>
+<a name="line-679"></a> <span class="k">delete</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">tile</span><span class="p">);</span>
+<a name="line-680"></a><span class="p">}</span>
+<a name="line-681"></a>
+<a name="line-682"></a><span class="cm">/**</span>
+<a name="line-683"></a><span class="cm"> * @brief Receives notifications from the database when images were changed and updates the tiler</span>
+<a name="line-684"></a><span class="cm"> */</span>
+<a name="line-685"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">slotImageChange</span><span class="p">(</span><span class="k">const</span> <span class="n">ImageChangeset</span><span class="o">&amp;</span> <span class="n">changeset</span><span class="p">)</span>
+<a name="line-686"></a><span class="p">{</span>
+<a name="line-687"></a> <span class="k">const</span> <span class="n">DatabaseFields</span><span class="o">::</span><span class="n">Set</span> <span class="n">changes</span> <span class="o">=</span> <span class="n">changeset</span><span class="p">.</span><span class="n">changes</span><span class="p">();</span>
+<a name="line-688"></a><span class="cm">/*</span>
+<a name="line-689"></a><span class="cm"> const DatabaseFields::ItemPositions imagePositionChanges = changes;</span>
+<a name="line-690"></a><span class="cm">*/</span>
+<a name="line-691"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="p">((</span><span class="n">changes</span> <span class="o">&amp;</span> <span class="n">DatabaseFields</span><span class="o">::</span><span class="n">LatitudeNumber</span><span class="p">)</span> <span class="o">||</span>
+<a name="line-692"></a> <span class="p">(</span><span class="n">changes</span> <span class="o">&amp;</span> <span class="n">DatabaseFields</span><span class="o">::</span><span class="n">LongitudeNumber</span><span class="p">)</span> <span class="o">||</span>
+<a name="line-693"></a> <span class="p">(</span><span class="n">changes</span> <span class="o">&amp;</span> <span class="n">DatabaseFields</span><span class="o">::</span><span class="n">Altitude</span><span class="p">)))</span>
+<a name="line-694"></a> <span class="p">{</span>
+<a name="line-695"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-696"></a> <span class="p">}</span>
+<a name="line-697"></a>
+<a name="line-698"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">qlonglong</span><span class="o">&amp;</span> <span class="n">id</span><span class="p">,</span> <span class="n">changeset</span><span class="p">.</span><span class="n">ids</span><span class="p">())</span>
+<a name="line-699"></a> <span class="p">{</span>
+<a name="line-700"></a> <span class="k">const</span> <span class="n">ItemInfo</span> <span class="n">newItemInfo</span><span class="p">(</span><span class="n">id</span><span class="p">);</span>
+<a name="line-701"></a>
+<a name="line-702"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">newItemInfo</span><span class="p">.</span><span class="n">hasCoordinates</span><span class="p">())</span>
+<a name="line-703"></a> <span class="p">{</span>
+<a name="line-704"></a> <span class="c1">// the image has no coordinates any more</span>
+<a name="line-705"></a> <span class="c1">// remove it from the tiles and the image list</span>
+<a name="line-706"></a>
+<a name="line-707"></a> <span class="k">const</span> <span class="n">GPSItemInfo</span> <span class="n">oldInfo</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">id</span><span class="p">);</span>
+<a name="line-708"></a> <span class="k">const</span> <span class="n">GeoCoordinates</span> <span class="n">oldCoordinates</span> <span class="o">=</span> <span class="n">oldInfo</span><span class="p">.</span><span class="n">coordinates</span><span class="p">;</span>
+<a name="line-709"></a> <span class="k">const</span> <span class="n">TileIndex</span> <span class="n">oldTileIndex</span> <span class="o">=</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">fromCoordinates</span><span class="p">(</span><span class="n">oldCoordinates</span><span class="p">,</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">MaxLevel</span><span class="p">);</span>
<a name="line-710"></a>
-<a name="line-711"></a><span class="n">QVariant</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">headerData</span><span class="p">(</span><span class="kt">int</span> <span class="n">section</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Orientation</span> <span class="n">orientation</span><span class="p">,</span> <span class="kt">int</span> <span class="n">role</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-712"></a><span class="p">{</span>
-<a name="line-713"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">headerData</span><span class="p">(</span><span class="n">section</span><span class="p">,</span> <span class="n">orientation</span><span class="p">,</span> <span class="n">role</span><span class="p">);</span>
-<a name="line-714"></a><span class="p">}</span>
-<a name="line-715"></a>
-<a name="line-716"></a><span class="n">Qt</span><span class="o">::</span><span class="n">ItemFlags</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">flags</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">index</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-717"></a><span class="p">{</span>
-<a name="line-718"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">currentBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+<a name="line-711"></a> <span class="n">removeMarkerFromTileAndChildren</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">oldTileIndex</span><span class="p">,</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">rootTile</span><span class="p">()),</span> <span class="mi">0</span><span class="p">,</span> <span class="k">nullptr</span><span class="p">);</span>
+<a name="line-712"></a>
+<a name="line-713"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="n">id</span><span class="p">);</span>
+<a name="line-714"></a>
+<a name="line-715"></a> <span class="k">continue</span><span class="p">;</span>
+<a name="line-716"></a> <span class="p">}</span>
+<a name="line-717"></a>
+<a name="line-718"></a> <span class="n">GeoCoordinates</span> <span class="n">newCoordinates</span><span class="p">(</span><span class="n">newItemInfo</span><span class="p">.</span><span class="n">latitudeNumber</span><span class="p">(),</span> <span class="n">newItemInfo</span><span class="p">.</span><span class="n">longitudeNumber</span><span class="p">());</span>
<a name="line-719"></a>
-<a name="line-720"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span> <span class="o">&amp;&amp;</span> <span class="p">((</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeSpacer</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">))</span> <span class="p">)</span>
-<a name="line-721"></a> <span class="p">{</span>
-<a name="line-722"></a> <span class="k">return</span> <span class="n">QAbstractItemModel</span><span class="o">::</span><span class="n">flags</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
-<a name="line-723"></a> <span class="p">}</span>
+<a name="line-720"></a> <span class="k">if</span> <span class="p">(</span><span class="n">newItemInfo</span><span class="p">.</span><span class="n">hasAltitude</span><span class="p">())</span>
+<a name="line-721"></a> <span class="p">{</span>
+<a name="line-722"></a> <span class="n">newCoordinates</span><span class="p">.</span><span class="n">setAlt</span><span class="p">(</span><span class="n">newItemInfo</span><span class="p">.</span><span class="n">altitudeNumber</span><span class="p">());</span>
+<a name="line-723"></a> <span class="p">}</span>
<a name="line-724"></a>
-<a name="line-725"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">flags</span><span class="p">(</span><span class="n">toSourceIndex</span><span class="p">(</span><span class="n">index</span><span class="p">));</span>
-<a name="line-726"></a><span class="p">}</span>
-<a name="line-727"></a>
-<a name="line-728"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotSourceDataChanged</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">topLeft</span><span class="p">,</span> <span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">bottomRight</span><span class="p">)</span>
-<a name="line-729"></a><span class="p">{</span>
-<a name="line-730"></a> <span class="n">emit</span> <span class="n">dataChanged</span><span class="p">(</span><span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">topLeft</span><span class="p">),</span><span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">bottomRight</span><span class="p">));</span>
-<a name="line-731"></a><span class="p">}</span>
-<a name="line-732"></a>
-<a name="line-733"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotSourceHeaderDataChanged</span><span class="p">(</span><span class="k">const</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Orientation</span> <span class="n">orientation</span><span class="p">,</span> <span class="kt">int</span> <span class="n">first</span><span class="p">,</span> <span class="kt">int</span> <span class="n">last</span><span class="p">)</span>
-<a name="line-734"></a><span class="p">{</span>
-<a name="line-735"></a> <span class="n">emit</span> <span class="n">headerDataChanged</span><span class="p">(</span><span class="n">orientation</span><span class="p">,</span> <span class="n">first</span><span class="p">,</span> <span class="n">last</span><span class="p">);</span>
-<a name="line-736"></a><span class="p">}</span>
-<a name="line-737"></a>
-<a name="line-738"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotColumnsAboutToBeInserted</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">parent</span><span class="p">,</span> <span class="kt">int</span> <span class="n">start</span><span class="p">,</span> <span class="kt">int</span> <span class="n">end</span><span class="p">)</span>
-<a name="line-739"></a><span class="p">{</span>
-<a name="line-740"></a> <span class="c1">//TODO: Should we do something here?</span>
-<a name="line-741"></a>
-<a name="line-742"></a> <span class="n">beginInsertColumns</span><span class="p">(</span><span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span> <span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">);</span>
-<a name="line-743"></a><span class="p">}</span>
-<a name="line-744"></a>
-<a name="line-745"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotColumnsAboutToBeMoved</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">sourceParent</span><span class="p">,</span>
-<a name="line-746"></a> <span class="kt">int</span> <span class="n">sourceStart</span><span class="p">,</span>
-<a name="line-747"></a> <span class="kt">int</span> <span class="n">sourceEnd</span><span class="p">,</span>
-<a name="line-748"></a> <span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">destinationParent</span><span class="p">,</span>
-<a name="line-749"></a> <span class="kt">int</span> <span class="n">destinationColumn</span><span class="p">)</span>
-<a name="line-750"></a><span class="p">{</span>
-<a name="line-751"></a> <span class="n">beginMoveColumns</span><span class="p">(</span><span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">sourceParent</span><span class="p">),</span> <span class="n">sourceStart</span><span class="p">,</span> <span class="n">sourceEnd</span><span class="p">,</span> <span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">destinationParent</span><span class="p">),</span> <span class="n">destinationColumn</span><span class="p">);</span>
-<a name="line-752"></a><span class="p">}</span>
-<a name="line-753"></a>
-<a name="line-754"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotColumnsAboutToBeRemoved</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">parent</span><span class="p">,</span> <span class="kt">int</span> <span class="n">start</span><span class="p">,</span> <span class="kt">int</span> <span class="n">end</span> <span class="p">)</span>
-<a name="line-755"></a><span class="p">{</span>
-<a name="line-756"></a> <span class="n">beginRemoveColumns</span><span class="p">(</span><span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span> <span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">);</span>
-<a name="line-757"></a><span class="p">}</span>
+<a name="line-725"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">id</span><span class="p">))</span>
+<a name="line-726"></a> <span class="p">{</span>
+<a name="line-727"></a> <span class="c1">// the image id is known, therefore the image has already been sorted into tiles.</span>
+<a name="line-728"></a> <span class="c1">// We assume that the coordinates of the image have changed.</span>
+<a name="line-729"></a>
+<a name="line-730"></a> <span class="k">const</span> <span class="n">GPSItemInfo</span> <span class="n">oldInfo</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">id</span><span class="p">);</span>
+<a name="line-731"></a> <span class="k">const</span> <span class="n">GeoCoordinates</span> <span class="n">oldCoordinates</span> <span class="o">=</span> <span class="n">oldInfo</span><span class="p">.</span><span class="n">coordinates</span><span class="p">;</span>
+<a name="line-732"></a> <span class="k">const</span> <span class="n">GPSItemInfo</span> <span class="n">currentItemInfo</span> <span class="o">=</span> <span class="n">GPSItemInfo</span><span class="o">::</span><span class="n">fromIdCoordinatesRatingDateTime</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">newCoordinates</span><span class="p">,</span> <span class="n">newItemInfo</span><span class="p">.</span><span class="n">rating</span><span class="p">(),</span> <span class="n">newItemInfo</span><span class="p">.</span><span class="n">dateTime</span><span class="p">());</span>
+<a name="line-733"></a>
+<a name="line-734"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">currentItemInfo</span><span class="p">);</span>
+<a name="line-735"></a>
+<a name="line-736"></a> <span class="k">const</span> <span class="n">TileIndex</span> <span class="n">oldTileIndex</span> <span class="o">=</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">fromCoordinates</span><span class="p">(</span><span class="n">oldCoordinates</span><span class="p">,</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">MaxLevel</span><span class="p">);</span>
+<a name="line-737"></a> <span class="k">const</span> <span class="n">TileIndex</span> <span class="n">newTileIndex</span> <span class="o">=</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">fromCoordinates</span><span class="p">(</span><span class="n">newCoordinates</span><span class="p">,</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">MaxLevel</span><span class="p">);</span>
+<a name="line-738"></a>
+<a name="line-739"></a> <span class="c1">// find out up to which level the tile indices are equal</span>
+<a name="line-740"></a>
+<a name="line-741"></a> <span class="kt">int</span> <span class="n">separatorLevel</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+<a name="line-742"></a>
+<a name="line-743"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">MaxLevel</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-744"></a> <span class="p">{</span>
+<a name="line-745"></a> <span class="k">if</span> <span class="p">(</span><span class="n">oldTileIndex</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="o">!=</span> <span class="n">newTileIndex</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">))</span>
+<a name="line-746"></a> <span class="p">{</span>
+<a name="line-747"></a> <span class="n">separatorLevel</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
+<a name="line-748"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-749"></a> <span class="p">}</span>
+<a name="line-750"></a> <span class="p">}</span>
+<a name="line-751"></a>
+<a name="line-752"></a> <span class="k">if</span> <span class="p">(</span><span class="n">separatorLevel</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="line-753"></a> <span class="p">{</span>
+<a name="line-754"></a> <span class="c1">// the tile index has not changed</span>
+<a name="line-755"></a>
+<a name="line-756"></a> <span class="k">continue</span><span class="p">;</span>
+<a name="line-757"></a> <span class="p">}</span>
<a name="line-758"></a>
-<a name="line-759"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotColumnsInserted</span><span class="p">()</span>
-<a name="line-760"></a><span class="p">{</span>
-<a name="line-761"></a> <span class="n">endInsertColumns</span><span class="p">();</span>
-<a name="line-762"></a><span class="p">}</span>
-<a name="line-763"></a>
-<a name="line-764"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotColumnsMoved</span><span class="p">()</span>
-<a name="line-765"></a><span class="p">{</span>
-<a name="line-766"></a> <span class="n">endMoveColumns</span><span class="p">();</span>
-<a name="line-767"></a><span class="p">}</span>
-<a name="line-768"></a>
-<a name="line-769"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotColumnsRemoved</span><span class="p">()</span>
-<a name="line-770"></a><span class="p">{</span>
-<a name="line-771"></a> <span class="n">endRemoveColumns</span><span class="p">();</span>
-<a name="line-772"></a><span class="p">}</span>
-<a name="line-773"></a>
-<a name="line-774"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotLayoutAboutToBeChanged</span><span class="p">()</span>
-<a name="line-775"></a><span class="p">{</span>
-<a name="line-776"></a> <span class="n">emit</span> <span class="n">layoutAboutToBeChanged</span><span class="p">();</span>
-<a name="line-777"></a><span class="p">}</span>
-<a name="line-778"></a>
-<a name="line-779"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotLayoutChanged</span><span class="p">()</span>
-<a name="line-780"></a><span class="p">{</span>
-<a name="line-781"></a> <span class="n">emit</span> <span class="n">layoutChanged</span><span class="p">();</span>
-<a name="line-782"></a><span class="p">}</span>
-<a name="line-783"></a>
-<a name="line-784"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotModelAboutToBeReset</span><span class="p">()</span>
-<a name="line-785"></a><span class="p">{</span>
-<a name="line-786"></a> <span class="n">beginResetModel</span><span class="p">();</span>
-<a name="line-787"></a><span class="p">}</span>
-<a name="line-788"></a>
-<a name="line-789"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotModelReset</span><span class="p">()</span>
-<a name="line-790"></a><span class="p">{</span>
-<a name="line-791"></a> <span class="n">beginResetModel</span><span class="p">();</span>
-<a name="line-792"></a> <span class="n">endResetModel</span><span class="p">();</span>
-<a name="line-793"></a><span class="p">}</span>
-<a name="line-794"></a>
-<a name="line-795"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotRowsAboutToBeInserted</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">parent</span><span class="p">,</span> <span class="kt">int</span> <span class="n">start</span><span class="p">,</span> <span class="kt">int</span> <span class="n">end</span><span class="p">)</span>
-<a name="line-796"></a><span class="p">{</span>
-<a name="line-797"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentBranch</span> <span class="o">=</span> <span class="n">parent</span><span class="p">.</span><span class="n">isValid</span><span class="p">()</span> <span class="o">?</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">TreeBranch</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">).</span><span class="n">internalPointer</span><span class="p">())</span> <span class="o">:</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">;</span>
-<a name="line-798"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">=</span> <span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
-<a name="line-799"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">startInsert</span> <span class="o">=</span> <span class="n">start</span><span class="p">;</span>
-<a name="line-800"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">endInsert</span> <span class="o">=</span> <span class="n">end</span><span class="p">;</span>
+<a name="line-759"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="n">currentTileOld</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">rootTile</span><span class="p">());</span>
+<a name="line-760"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="n">currentTileNew</span> <span class="o">=</span> <span class="n">currentTileOld</span><span class="p">;</span>
+<a name="line-761"></a> <span class="kt">int</span> <span class="n">level</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-762"></a>
+<a name="line-763"></a> <span class="k">for</span> <span class="p">(</span><span class="n">level</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">level</span> <span class="o">&lt;=</span> <span class="n">oldTileIndex</span><span class="p">.</span><span class="n">level</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">level</span><span class="p">)</span>
+<a name="line-764"></a> <span class="p">{</span>
+<a name="line-765"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentTileOld</span><span class="o">-&gt;</span><span class="n">childrenEmpty</span><span class="p">())</span>
+<a name="line-766"></a> <span class="p">{</span>
+<a name="line-767"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-768"></a> <span class="p">}</span>
+<a name="line-769"></a>
+<a name="line-770"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">tileIndex</span> <span class="o">=</span> <span class="n">oldTileIndex</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">level</span><span class="p">);</span>
+<a name="line-771"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="k">const</span> <span class="n">childTileOld</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">currentTileOld</span><span class="o">-&gt;</span><span class="n">getChild</span><span class="p">(</span><span class="n">tileIndex</span><span class="p">));</span>
+<a name="line-772"></a>
+<a name="line-773"></a> <span class="k">if</span> <span class="p">(</span><span class="n">childTileOld</span> <span class="o">==</span> <span class="k">nullptr</span><span class="p">)</span>
+<a name="line-774"></a> <span class="p">{</span>
+<a name="line-775"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-776"></a> <span class="p">}</span>
+<a name="line-777"></a>
+<a name="line-778"></a> <span class="k">if</span> <span class="p">(</span><span class="n">level</span> <span class="o">&lt;</span> <span class="n">separatorLevel</span><span class="p">)</span>
+<a name="line-779"></a> <span class="p">{</span>
+<a name="line-780"></a> <span class="n">currentTileOld</span> <span class="o">=</span> <span class="n">childTileOld</span><span class="p">;</span>
+<a name="line-781"></a> <span class="n">currentTileNew</span> <span class="o">=</span> <span class="n">currentTileOld</span><span class="p">;</span>
+<a name="line-782"></a> <span class="p">}</span>
+<a name="line-783"></a> <span class="k">else</span>
+<a name="line-784"></a> <span class="p">{</span>
+<a name="line-785"></a> <span class="n">removeMarkerFromTileAndChildren</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">oldTileIndex</span><span class="p">,</span> <span class="n">childTileOld</span><span class="p">,</span> <span class="n">level</span><span class="p">,</span> <span class="n">currentTileOld</span><span class="p">);</span>
+<a name="line-786"></a>
+<a name="line-787"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-788"></a> <span class="p">}</span>
+<a name="line-789"></a> <span class="p">}</span>
+<a name="line-790"></a>
+<a name="line-791"></a> <span class="n">addMarkerToTileAndChildren</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">newTileIndex</span><span class="p">,</span> <span class="n">currentTileNew</span><span class="p">,</span> <span class="n">level</span><span class="p">);</span>
+<a name="line-792"></a> <span class="p">}</span>
+<a name="line-793"></a> <span class="k">else</span>
+<a name="line-794"></a> <span class="p">{</span>
+<a name="line-795"></a> <span class="c1">// the image is new, add it to the existing tiles</span>
+<a name="line-796"></a>
+<a name="line-797"></a> <span class="k">const</span> <span class="n">GPSItemInfo</span> <span class="n">currentItemInfo</span> <span class="o">=</span> <span class="n">GPSItemInfo</span><span class="o">::</span><span class="n">fromIdCoordinatesRatingDateTime</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">newCoordinates</span><span class="p">,</span> <span class="n">newItemInfo</span><span class="p">.</span><span class="n">rating</span><span class="p">(),</span> <span class="n">newItemInfo</span><span class="p">.</span><span class="n">dateTime</span><span class="p">());</span>
+<a name="line-798"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">currentItemInfo</span><span class="p">);</span>
+<a name="line-799"></a>
+<a name="line-800"></a> <span class="k">const</span> <span class="n">TileIndex</span> <span class="n">newMarkerTileIndex</span> <span class="o">=</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">fromCoordinates</span><span class="p">(</span><span class="n">currentItemInfo</span><span class="p">.</span><span class="n">coordinates</span><span class="p">,</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">MaxLevel</span><span class="p">);</span>
<a name="line-801"></a>
-<a name="line-802"></a> <span class="n">beginInsertRows</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">,</span>
-<a name="line-803"></a> <span class="n">start</span> <span class="o">+</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span>
-<a name="line-804"></a> <span class="n">end</span> <span class="o">+</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">());</span>
-<a name="line-805"></a><span class="p">}</span>
-<a name="line-806"></a>
-<a name="line-807"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotRowsAboutToBeMoved</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">sourceParent</span><span class="p">,</span> <span class="kt">int</span> <span class="n">sourceStart</span><span class="p">,</span> <span class="kt">int</span> <span class="n">sourceEnd</span><span class="p">,</span>
-<a name="line-808"></a> <span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">destinationParent</span><span class="p">,</span> <span class="kt">int</span> <span class="n">destinationRow</span><span class="p">)</span>
-<a name="line-809"></a><span class="p">{</span>
-<a name="line-810"></a> <span class="n">beginMoveRows</span><span class="p">(</span><span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">sourceParent</span><span class="p">),</span> <span class="n">sourceStart</span><span class="p">,</span> <span class="n">sourceEnd</span><span class="p">,</span> <span class="n">fromSourceIndex</span><span class="p">(</span><span class="n">destinationParent</span><span class="p">),</span> <span class="n">destinationRow</span> <span class="p">);</span>
-<a name="line-811"></a><span class="p">}</span>
-<a name="line-812"></a>
-<a name="line-813"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotRowsAboutToBeRemoved</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">parent</span><span class="p">,</span> <span class="kt">int</span> <span class="n">start</span><span class="p">,</span> <span class="kt">int</span> <span class="n">end</span><span class="p">)</span>
-<a name="line-814"></a><span class="p">{</span>
-<a name="line-815"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
-<a name="line-816"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">start</span><span class="p">);</span>
-<a name="line-817"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">end</span><span class="p">);</span>
-<a name="line-818"></a><span class="p">}</span>
+<a name="line-802"></a> <span class="n">addMarkerToTileAndChildren</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">newMarkerTileIndex</span><span class="p">,</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">rootTile</span><span class="p">()),</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-803"></a> <span class="p">}</span>
+<a name="line-804"></a> <span class="p">}</span>
+<a name="line-805"></a>
+<a name="line-806"></a> <span class="n">emit</span> <span class="n">signalTilesOrSelectionChanged</span><span class="p">();</span>
+<a name="line-807"></a><span class="p">}</span>
+<a name="line-808"></a>
+<a name="line-809"></a><span class="cm">/**</span>
+<a name="line-810"></a><span class="cm"> * @brief Receives notifications from the album model about new items</span>
+<a name="line-811"></a><span class="cm"> */</span>
+<a name="line-812"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">slotNewModelData</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">ItemInfo</span><span class="o">&gt;&amp;</span> <span class="n">infoList</span><span class="p">)</span>
+<a name="line-813"></a><span class="p">{</span>
+<a name="line-814"></a> <span class="c1">// We do not actually store the data from the model, we just want</span>
+<a name="line-815"></a> <span class="c1">// to know that something was changed.</span>
+<a name="line-816"></a> <span class="c1">/// @todo Also monitor removed, reset, etc. signals</span>
+<a name="line-817"></a>
+<a name="line-818"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">infoList</span><span class="p">);</span>
<a name="line-819"></a>
-<a name="line-820"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotRowsInserted</span><span class="p">()</span>
-<a name="line-821"></a><span class="p">{</span>
-<a name="line-822"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentBranch</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">.</span><span class="n">isValid</span><span class="p">()</span> <span class="o">?</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">TreeBranch</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">.</span><span class="n">internalPointer</span><span class="p">())</span> <span class="o">:</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">;</span>
-<a name="line-823"></a>
-<a name="line-824"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">startInsert</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">endInsert</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-825"></a> <span class="p">{</span>
-<a name="line-826"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">newBranch</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TreeBranch</span><span class="p">();</span>
-<a name="line-827"></a> <span class="n">newBranch</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parentBranch</span><span class="p">;</span>
-<a name="line-828"></a> <span class="n">newBranch</span><span class="o">-&gt;</span><span class="n">sourceIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">);</span>
-<a name="line-829"></a> <span class="n">newBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">=</span> <span class="n">TypeChild</span><span class="p">;</span>
-<a name="line-830"></a>
-<a name="line-831"></a> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">newBranch</span><span class="p">);</span>
-<a name="line-832"></a> <span class="p">}</span>
-<a name="line-833"></a>
-<a name="line-834"></a> <span class="n">endInsertRows</span><span class="p">();</span>
+<a name="line-820"></a> <span class="n">emit</span> <span class="nf">signalTilesOrSelectionChanged</span><span class="p">();</span>
+<a name="line-821"></a><span class="p">}</span>
+<a name="line-822"></a>
+<a name="line-823"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">setRegionSelection</span><span class="p">(</span><span class="k">const</span> <span class="n">GeoCoordinates</span><span class="o">::</span><span class="n">Pair</span><span class="o">&amp;</span> <span class="n">sel</span><span class="p">)</span>
+<a name="line-824"></a><span class="p">{</span>
+<a name="line-825"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentRegionSelection</span> <span class="o">=</span> <span class="n">sel</span><span class="p">;</span>
+<a name="line-826"></a>
+<a name="line-827"></a> <span class="k">if</span> <span class="p">(</span><span class="n">sel</span><span class="p">.</span><span class="n">first</span><span class="p">.</span><span class="n">hasCoordinates</span><span class="p">())</span>
+<a name="line-828"></a> <span class="p">{</span>
+<a name="line-829"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapGlobalGroupState</span> <span class="o">|=</span> <span class="n">RegionSelectedMask</span><span class="p">;</span>
+<a name="line-830"></a> <span class="p">}</span>
+<a name="line-831"></a> <span class="k">else</span>
+<a name="line-832"></a> <span class="p">{</span>
+<a name="line-833"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapGlobalGroupState</span> <span class="o">&amp;=</span> <span class="o">~</span><span class="n">RegionSelectedMask</span><span class="p">;</span>
+<a name="line-834"></a> <span class="p">}</span>
<a name="line-835"></a>
-<a name="line-836"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-837"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">startInsert</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
-<a name="line-838"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">endInsert</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
-<a name="line-839"></a><span class="p">}</span>
-<a name="line-840"></a>
-<a name="line-841"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotRowsMoved</span><span class="p">()</span>
-<a name="line-842"></a><span class="p">{</span>
-<a name="line-843"></a> <span class="n">endMoveRows</span><span class="p">();</span>
-<a name="line-844"></a><span class="p">}</span>
-<a name="line-845"></a>
-<a name="line-846"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotRowsRemoved</span><span class="p">()</span>
-<a name="line-847"></a><span class="p">{</span>
-<a name="line-848"></a><span class="p">}</span>
-<a name="line-849"></a>
-<a name="line-850"></a><span class="cm">/**</span>
-<a name="line-851"></a><span class="cm"> * Deletes a tag.</span>
-<a name="line-852"></a><span class="cm"> * @param currentIndex The tag found at this index will be deleted.</span>
-<a name="line-853"></a><span class="cm"> */</span>
-<a name="line-854"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">deleteTag</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">currentIndex</span><span class="p">)</span>
-<a name="line-855"></a><span class="p">{</span>
-<a name="line-856"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">currentIndex</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
-<a name="line-857"></a> <span class="p">{</span>
-<a name="line-858"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-859"></a> <span class="p">}</span>
+<a name="line-836"></a> <span class="n">emit</span> <span class="n">signalTilesOrSelectionChanged</span><span class="p">();</span>
+<a name="line-837"></a><span class="p">}</span>
+<a name="line-838"></a>
+<a name="line-839"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">removeCurrentRegionSelection</span><span class="p">()</span>
+<a name="line-840"></a><span class="p">{</span>
+<a name="line-841"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentRegionSelection</span><span class="p">.</span><span class="n">first</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
+<a name="line-842"></a>
+<a name="line-843"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapGlobalGroupState</span> <span class="o">&amp;=</span> <span class="o">~</span><span class="n">RegionSelectedMask</span><span class="p">;</span>
+<a name="line-844"></a>
+<a name="line-845"></a> <span class="n">emit</span> <span class="nf">signalTilesOrSelectionChanged</span><span class="p">();</span>
+<a name="line-846"></a><span class="p">}</span>
+<a name="line-847"></a>
+<a name="line-848"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">onIndicesClicked</span><span class="p">(</span><span class="k">const</span> <span class="n">ClickInfo</span><span class="o">&amp;</span> <span class="n">clickInfo</span><span class="p">)</span>
+<a name="line-849"></a><span class="p">{</span>
+<a name="line-850"></a> <span class="c1">/// @todo Also handle the representative index</span>
+<a name="line-851"></a>
+<a name="line-852"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="o">&gt;</span> <span class="n">clickedImagesId</span><span class="p">;</span>
+<a name="line-853"></a>
+<a name="line-854"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">TileIndex</span><span class="o">&amp;</span> <span class="n">tileIndex</span><span class="p">,</span> <span class="n">clickInfo</span><span class="p">.</span><span class="n">tileIndicesList</span><span class="p">)</span>
+<a name="line-855"></a> <span class="p">{</span>
+<a name="line-856"></a> <span class="n">clickedImagesId</span> <span class="o">&lt;&lt;</span> <span class="n">getTileMarkerIds</span><span class="p">(</span><span class="n">tileIndex</span><span class="p">);</span>
+<a name="line-857"></a> <span class="p">}</span>
+<a name="line-858"></a>
+<a name="line-859"></a> <span class="kt">int</span> <span class="n">repImageId</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<a name="line-860"></a>
-<a name="line-861"></a> <span class="n">QModelIndex</span> <span class="n">parentIndex</span> <span class="o">=</span> <span class="n">currentIndex</span><span class="p">.</span><span class="n">parent</span><span class="p">();</span>
-<a name="line-862"></a> <span class="kt">int</span> <span class="n">currentRow</span> <span class="o">=</span> <span class="n">currentIndex</span><span class="p">.</span><span class="n">row</span><span class="p">();</span>
-<a name="line-863"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">parentIndex</span><span class="p">);</span>
-<a name="line-864"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">currentChildBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">);</span>
+<a name="line-861"></a> <span class="k">if</span> <span class="p">(</span><span class="n">clickInfo</span><span class="p">.</span><span class="n">representativeIndex</span><span class="p">.</span><span class="n">canConvert</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">())</span>
+<a name="line-862"></a> <span class="p">{</span>
+<a name="line-863"></a> <span class="n">repImageId</span> <span class="o">=</span> <span class="n">clickInfo</span><span class="p">.</span><span class="n">representativeIndex</span><span class="p">.</span><span class="n">value</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">().</span><span class="n">second</span><span class="p">;</span>
+<a name="line-864"></a> <span class="p">}</span>
<a name="line-865"></a>
-<a name="line-866"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">TypeChild</span><span class="p">)</span>
+<a name="line-866"></a> <span class="k">if</span> <span class="p">(</span><span class="n">clickInfo</span><span class="p">.</span><span class="n">currentMouseMode</span> <span class="o">==</span> <span class="n">MouseModeSelectThumbnail</span> <span class="o">&amp;&amp;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="p">)</span>
<a name="line-867"></a> <span class="p">{</span>
-<a name="line-868"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-869"></a> <span class="p">}</span>
-<a name="line-870"></a>
-<a name="line-871"></a> <span class="k">if</span> <span class="p">((</span><span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">))</span>
-<a name="line-872"></a> <span class="p">{</span>
-<a name="line-873"></a> <span class="n">beginMoveRows</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span>
-<a name="line-874"></a> <span class="n">parentIndex</span><span class="p">,</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">());</span>
-<a name="line-875"></a>
-<a name="line-876"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">j</span> <span class="o">&lt;</span> <span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span>
-<a name="line-877"></a> <span class="p">{</span>
-<a name="line-878"></a> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">j</span><span class="p">]);</span>
-<a name="line-879"></a> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">last</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parentBranch</span><span class="p">;</span>
-<a name="line-880"></a><span class="cm">/*</span>
-<a name="line-881"></a><span class="cm"> QModelIndex testIndex =</span>
-<a name="line-882"></a><span class="cm">*/</span>
-<a name="line-883"></a> <span class="n">createIndex</span><span class="p">(</span><span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">last</span><span class="p">());</span>
-<a name="line-884"></a> <span class="p">}</span>
-<a name="line-885"></a>
-<a name="line-886"></a> <span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
-<a name="line-887"></a> <span class="n">endMoveRows</span><span class="p">();</span>
-<a name="line-888"></a>
-<a name="line-889"></a> <span class="n">beginMoveRows</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">,</span> <span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span>
-<a name="line-890"></a> <span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span>
-<a name="line-891"></a> <span class="n">parentIndex</span><span class="p">,</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">());</span>
-<a name="line-892"></a>
-<a name="line-893"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span>
-<a name="line-894"></a> <span class="n">j</span> <span class="o">&lt;</span> <span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span>
-<a name="line-895"></a> <span class="p">{</span>
-<a name="line-896"></a> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">j</span> <span class="o">-</span> <span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()]);</span>
-<a name="line-897"></a> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">last</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parentBranch</span><span class="p">;</span>
-<a name="line-898"></a> <span class="p">}</span>
-<a name="line-899"></a>
-<a name="line-900"></a> <span class="n">currentChildBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
-<a name="line-901"></a> <span class="n">endMoveRows</span><span class="p">();</span>
+<a name="line-868"></a> <span class="cm">/**</span>
+<a name="line-869"></a><span class="cm"> * @todo This does not work properly, because not all images in a tile</span>
+<a name="line-870"></a><span class="cm"> * may be selectable because some of them are outside of the region selection</span>
+<a name="line-871"></a><span class="cm"> */</span>
+<a name="line-872"></a> <span class="k">const</span> <span class="kt">bool</span> <span class="n">doSelect</span> <span class="o">=</span> <span class="p">(</span><span class="n">clickInfo</span><span class="p">.</span><span class="n">groupSelectionState</span> <span class="o">&amp;</span> <span class="n">SelectedMask</span><span class="p">)</span> <span class="o">!=</span> <span class="n">SelectedAll</span><span class="p">;</span>
+<a name="line-873"></a>
+<a name="line-874"></a> <span class="k">const</span> <span class="n">QItemSelectionModel</span><span class="o">::</span><span class="n">SelectionFlags</span> <span class="n">selectionFlags</span> <span class="o">=</span>
+<a name="line-875"></a> <span class="p">(</span><span class="n">doSelect</span> <span class="o">?</span> <span class="n">QItemSelectionModel</span><span class="o">::</span><span class="nl">Select</span> <span class="p">:</span> <span class="n">QItemSelectionModel</span><span class="o">::</span><span class="n">Deselect</span><span class="p">)</span>
+<a name="line-876"></a> <span class="o">|</span> <span class="n">QItemSelectionModel</span><span class="o">::</span><span class="n">Rows</span><span class="p">;</span>
+<a name="line-877"></a>
+<a name="line-878"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">clickedImagesId</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-879"></a> <span class="p">{</span>
+<a name="line-880"></a> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageFilterModel</span><span class="o">-&gt;</span><span class="n">indexForImageId</span><span class="p">(</span><span class="n">clickedImagesId</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">));</span>
+<a name="line-881"></a>
+<a name="line-882"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="o">-&gt;</span><span class="n">isSelected</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">)</span> <span class="o">!=</span> <span class="n">doSelect</span><span class="p">)</span>
+<a name="line-883"></a> <span class="p">{</span>
+<a name="line-884"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="o">-&gt;</span><span class="n">select</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">,</span> <span class="n">selectionFlags</span><span class="p">);</span>
+<a name="line-885"></a> <span class="p">}</span>
+<a name="line-886"></a> <span class="p">}</span>
+<a name="line-887"></a>
+<a name="line-888"></a> <span class="k">if</span> <span class="p">(</span><span class="n">repImageId</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-889"></a> <span class="p">{</span>
+<a name="line-890"></a> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">repImageIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageFilterModel</span><span class="o">-&gt;</span><span class="n">indexForImageId</span><span class="p">(</span><span class="n">repImageId</span><span class="p">);</span>
+<a name="line-891"></a>
+<a name="line-892"></a> <span class="k">if</span> <span class="p">(</span><span class="n">repImageIndex</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
+<a name="line-893"></a> <span class="p">{</span>
+<a name="line-894"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">repImageIndex</span><span class="p">,</span> <span class="n">selectionFlags</span><span class="p">);</span>
+<a name="line-895"></a> <span class="p">}</span>
+<a name="line-896"></a> <span class="p">}</span>
+<a name="line-897"></a> <span class="p">}</span>
+<a name="line-898"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">clickInfo</span><span class="p">.</span><span class="n">currentMouseMode</span> <span class="o">==</span> <span class="n">MouseModeFilter</span><span class="p">)</span>
+<a name="line-899"></a> <span class="p">{</span>
+<a name="line-900"></a> <span class="n">setPositiveFilterIsActive</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-901"></a> <span class="n">emit</span> <span class="nf">signalModelFilteredImages</span><span class="p">(</span><span class="n">clickedImagesId</span><span class="p">);</span>
<a name="line-902"></a> <span class="p">}</span>
-<a name="line-903"></a>
-<a name="line-904"></a> <span class="n">beginRemoveRows</span><span class="p">(</span><span class="n">parentIndex</span><span class="p">,</span> <span class="n">currentRow</span><span class="p">,</span> <span class="n">currentRow</span><span class="p">);</span>
-<a name="line-905"></a>
-<a name="line-906"></a> <span class="c1">//TODO: is it good here?</span>
-<a name="line-907"></a>
-<a name="line-908"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentRow</span> <span class="o">&lt;</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">())</span>
-<a name="line-909"></a> <span class="p">{</span>
-<a name="line-910"></a> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">removeAt</span><span class="p">(</span><span class="n">currentRow</span><span class="p">);</span>
-<a name="line-911"></a> <span class="p">}</span>
-<a name="line-912"></a> <span class="k">else</span>
-<a name="line-913"></a> <span class="p">{</span>
-<a name="line-914"></a> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">removeAt</span><span class="p">(</span><span class="n">currentRow</span> <span class="o">-</span> <span class="n">parentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">());</span>
-<a name="line-915"></a> <span class="p">}</span>
-<a name="line-916"></a>
-<a name="line-917"></a> <span class="n">endRemoveRows</span><span class="p">();</span>
-<a name="line-918"></a><span class="p">}</span>
-<a name="line-919"></a>
-<a name="line-920"></a><span class="cm">/**</span>
-<a name="line-921"></a><span class="cm"> * Deletes all spacers or all new tags below @currentBranch.</span>
-<a name="line-922"></a><span class="cm"> * @param currentBranch The tree branch from where the scan starts.</span>
-<a name="line-923"></a><span class="cm"> * @param currentRow The row of current branch.</span>
-<a name="line-924"></a><span class="cm"> * @param whatShouldRemove The tag type that should to be removed. The options are: spacers or new tags.</span>
-<a name="line-925"></a><span class="cm"> */</span>
-<a name="line-926"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">findAndDeleteSpacersOrNewTags</span><span class="p">(</span> <span class="n">TreeBranch</span><span class="o">*</span> <span class="n">currentBranch</span><span class="p">,</span> <span class="kt">int</span> <span class="n">currentRow</span><span class="p">,</span> <span class="n">Type</span> <span class="n">whatShouldRemove</span><span class="p">)</span>
-<a name="line-927"></a><span class="p">{</span>
-<a name="line-928"></a><span class="cm">/*</span>
-<a name="line-929"></a><span class="cm"> QModelIndex currentIndex =</span>
-<a name="line-930"></a><span class="cm">*/</span>
-<a name="line-931"></a> <span class="n">createIndex</span><span class="p">(</span><span class="n">currentRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">currentBranch</span><span class="p">);</span>
-<a name="line-932"></a>
-<a name="line-933"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-934"></a> <span class="p">{</span>
-<a name="line-935"></a> <span class="n">findAndDeleteSpacersOrNewTags</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">i</span><span class="p">,</span> <span class="n">whatShouldRemove</span><span class="p">);</span>
-<a name="line-936"></a>
-<a name="line-937"></a> <span class="k">if</span> <span class="p">(</span><span class="n">whatShouldRemove</span> <span class="o">==</span> <span class="n">TypeSpacer</span><span class="p">)</span>
-<a name="line-938"></a> <span class="p">{</span>
-<a name="line-939"></a> <span class="n">QModelIndex</span> <span class="n">spacerIndex</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
-<a name="line-940"></a> <span class="n">deleteTag</span><span class="p">(</span><span class="n">spacerIndex</span><span class="p">);</span>
-<a name="line-941"></a> <span class="n">i</span><span class="o">--</span><span class="p">;</span>
-<a name="line-942"></a> <span class="p">}</span>
-<a name="line-943"></a> <span class="p">}</span>
-<a name="line-944"></a>
-<a name="line-945"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-946"></a> <span class="p">{</span>
-<a name="line-947"></a> <span class="n">findAndDeleteSpacersOrNewTags</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">i</span> <span class="o">+</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span> <span class="n">whatShouldRemove</span><span class="p">);</span>
+<a name="line-903"></a><span class="p">}</span>
+<a name="line-904"></a>
+<a name="line-905"></a><span class="n">QList</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="o">&gt;</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">getTileMarkerIds</span><span class="p">(</span><span class="k">const</span> <span class="n">TileIndex</span><span class="o">&amp;</span> <span class="n">tileIndex</span><span class="p">)</span>
+<a name="line-906"></a><span class="p">{</span>
+<a name="line-907"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">tileIndex</span><span class="p">.</span><span class="n">level</span><span class="p">()</span> <span class="o">&lt;=</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">MaxLevel</span><span class="p">);</span>
+<a name="line-908"></a>
+<a name="line-909"></a> <span class="k">const</span> <span class="n">MyTile</span><span class="o">*</span> <span class="k">const</span> <span class="n">myTile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">getTile</span><span class="p">(</span><span class="n">tileIndex</span><span class="p">,</span> <span class="nb">true</span><span class="p">));</span>
+<a name="line-910"></a>
+<a name="line-911"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">myTile</span><span class="p">)</span>
+<a name="line-912"></a> <span class="p">{</span>
+<a name="line-913"></a> <span class="k">return</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="o">&gt;</span><span class="p">();</span>
+<a name="line-914"></a> <span class="p">}</span>
+<a name="line-915"></a>
+<a name="line-916"></a> <span class="k">return</span> <span class="n">myTile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">;</span>
+<a name="line-917"></a><span class="p">}</span>
+<a name="line-918"></a>
+<a name="line-919"></a><span class="n">GeoGroupState</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">getGlobalGroupState</span><span class="p">()</span>
+<a name="line-920"></a><span class="p">{</span>
+<a name="line-921"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapGlobalGroupState</span><span class="p">;</span>
+<a name="line-922"></a><span class="p">}</span>
+<a name="line-923"></a>
+<a name="line-924"></a><span class="n">GeoGroupState</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">getImageState</span><span class="p">(</span><span class="k">const</span> <span class="n">qlonglong</span> <span class="n">imageId</span><span class="p">)</span>
+<a name="line-925"></a><span class="p">{</span>
+<a name="line-926"></a> <span class="n">GeoGroupState</span> <span class="n">imageState</span><span class="p">;</span>
+<a name="line-927"></a>
+<a name="line-928"></a> <span class="c1">// is the image inside the region selection?</span>
+<a name="line-929"></a>
+<a name="line-930"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mapGlobalGroupState</span> <span class="o">&amp;</span> <span class="n">RegionSelectedMask</span><span class="p">)</span>
+<a name="line-931"></a> <span class="p">{</span>
+<a name="line-932"></a> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">imageAlbumModelIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageAlbumModel</span><span class="o">-&gt;</span><span class="n">indexForImageId</span><span class="p">(</span><span class="n">imageId</span><span class="p">);</span>
+<a name="line-933"></a>
+<a name="line-934"></a> <span class="k">if</span> <span class="p">(</span><span class="n">imageAlbumModelIndex</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
+<a name="line-935"></a> <span class="p">{</span>
+<a name="line-936"></a> <span class="n">imageState</span> <span class="o">|=</span> <span class="n">RegionSelectedAll</span><span class="p">;</span>
+<a name="line-937"></a> <span class="p">}</span>
+<a name="line-938"></a> <span class="k">else</span>
+<a name="line-939"></a> <span class="p">{</span>
+<a name="line-940"></a> <span class="c1">// not inside region selection, therefore</span>
+<a name="line-941"></a> <span class="c1">// no other flags can apply</span>
+<a name="line-942"></a>
+<a name="line-943"></a> <span class="k">return</span> <span class="n">RegionSelectedNone</span><span class="p">;</span>
+<a name="line-944"></a> <span class="p">}</span>
+<a name="line-945"></a> <span class="p">}</span>
+<a name="line-946"></a>
+<a name="line-947"></a> <span class="c1">// is the image positively filtered?</span>
<a name="line-948"></a>
-<a name="line-949"></a> <span class="k">if</span> <span class="p">(</span><span class="n">whatShouldRemove</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">)</span>
-<a name="line-950"></a> <span class="p">{</span>
-<a name="line-951"></a> <span class="n">QModelIndex</span> <span class="n">newTagIndex</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span> <span class="mi">0</span><span class="p">,</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
-<a name="line-952"></a> <span class="n">deleteTag</span><span class="p">(</span><span class="n">newTagIndex</span><span class="p">);</span>
-<a name="line-953"></a> <span class="n">i</span><span class="o">--</span><span class="p">;</span>
-<a name="line-954"></a> <span class="p">}</span>
-<a name="line-955"></a> <span class="p">}</span>
+<a name="line-949"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mapGlobalGroupState</span> <span class="o">&amp;</span> <span class="n">FilteredPositiveMask</span><span class="p">)</span>
+<a name="line-950"></a> <span class="p">{</span>
+<a name="line-951"></a> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">imageIndexInFilterModel</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageFilterModel</span><span class="o">-&gt;</span><span class="n">indexForImageId</span><span class="p">(</span><span class="n">imageId</span><span class="p">);</span>
+<a name="line-952"></a>
+<a name="line-953"></a> <span class="k">if</span> <span class="p">(</span><span class="n">imageIndexInFilterModel</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
+<a name="line-954"></a> <span class="p">{</span>
+<a name="line-955"></a> <span class="n">imageState</span> <span class="o">|=</span> <span class="n">FilteredPositiveAll</span><span class="p">;</span>
<a name="line-956"></a>
-<a name="line-957"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-958"></a> <span class="p">{</span>
-<a name="line-959"></a> <span class="n">findAndDeleteSpacersOrNewTags</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">[</span><span class="n">i</span><span class="p">],</span>
-<a name="line-960"></a> <span class="n">i</span> <span class="o">+</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span>
-<a name="line-961"></a> <span class="n">whatShouldRemove</span><span class="p">);</span>
-<a name="line-962"></a> <span class="p">}</span>
-<a name="line-963"></a><span class="p">}</span>
-<a name="line-964"></a>
-<a name="line-965"></a><span class="cm">/**</span>
-<a name="line-966"></a><span class="cm"> * Deletes all spacers or all new tags.</span>
-<a name="line-967"></a><span class="cm"> * @param currentIndex If whatShouldRemove represents a spacer, the function will remove all spacers below currentIndex.If whatShouldRemove represents a new tag, the function will delete all new tags.</span>
-<a name="line-968"></a><span class="cm"> * @param whatShouldRemove The tag type that should be removed. The options are: spacers or new tags.</span>
-<a name="line-969"></a><span class="cm"> */</span>
-<a name="line-970"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">deleteAllSpacersOrNewTags</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">currentIndex</span><span class="p">,</span> <span class="n">Type</span> <span class="n">whatShouldRemove</span><span class="p">)</span>
-<a name="line-971"></a><span class="p">{</span>
-<a name="line-972"></a> <span class="k">if</span> <span class="p">(</span><span class="n">whatShouldRemove</span> <span class="o">==</span> <span class="n">TypeSpacer</span><span class="p">)</span>
-<a name="line-973"></a> <span class="p">{</span>
-<a name="line-974"></a><span class="cm">/*</span>
-<a name="line-975"></a><span class="cm"> currentIndex.isValid() ? static_cast&lt;TreeBranch*&gt;(currentIndex.internalPointer()) : d-&gt;rootTag;</span>
-<a name="line-976"></a><span class="cm">*/</span>
-<a name="line-977"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">currentBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">);</span>
-<a name="line-978"></a> <span class="n">findAndDeleteSpacersOrNewTags</span><span class="p">(</span><span class="n">currentBranch</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">whatShouldRemove</span><span class="p">);</span>
-<a name="line-979"></a> <span class="p">}</span>
-<a name="line-980"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">whatShouldRemove</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">)</span>
-<a name="line-981"></a> <span class="p">{</span>
-<a name="line-982"></a> <span class="n">findAndDeleteSpacersOrNewTags</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">whatShouldRemove</span><span class="p">);</span>
-<a name="line-983"></a> <span class="p">}</span>
-<a name="line-984"></a><span class="p">}</span>
-<a name="line-985"></a>
-<a name="line-986"></a><span class="cm">/**</span>
-<a name="line-987"></a><span class="cm"> * NOTE: tagAddressElements contains address tag: Places,Spain,Barcelona</span>
-<a name="line-988"></a><span class="cm"> * readdTag climbs the tree and checks on each level if tagAddressElements[level] is found.</span>
-<a name="line-989"></a><span class="cm"> * if the tag is found, it climbs up the next level</span>
-<a name="line-990"></a><span class="cm"> * else, it recreates the new tag and climbs up that tree.</span>
-<a name="line-991"></a><span class="cm"> */</span>
+<a name="line-957"></a> <span class="c1">// is the image selected?</span>
+<a name="line-958"></a>
+<a name="line-959"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="o">-&gt;</span><span class="n">hasSelection</span><span class="p">())</span>
+<a name="line-960"></a> <span class="p">{</span>
+<a name="line-961"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="o">-&gt;</span><span class="n">isSelected</span><span class="p">(</span><span class="n">imageIndexInFilterModel</span><span class="p">))</span>
+<a name="line-962"></a> <span class="p">{</span>
+<a name="line-963"></a> <span class="n">imageState</span> <span class="o">|=</span> <span class="n">SelectedAll</span><span class="p">;</span>
+<a name="line-964"></a> <span class="p">}</span>
+<a name="line-965"></a> <span class="p">}</span>
+<a name="line-966"></a> <span class="p">}</span>
+<a name="line-967"></a> <span class="k">else</span>
+<a name="line-968"></a> <span class="p">{</span>
+<a name="line-969"></a> <span class="c1">// the image is not positively filtered, therefore it can</span>
+<a name="line-970"></a> <span class="c1">// not be selected</span>
+<a name="line-971"></a>
+<a name="line-972"></a> <span class="k">return</span> <span class="n">imageState</span><span class="p">;</span>
+<a name="line-973"></a> <span class="p">}</span>
+<a name="line-974"></a> <span class="p">}</span>
+<a name="line-975"></a> <span class="k">else</span>
+<a name="line-976"></a> <span class="p">{</span>
+<a name="line-977"></a> <span class="c1">// is the image selected?</span>
+<a name="line-978"></a>
+<a name="line-979"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="o">-&gt;</span><span class="n">hasSelection</span><span class="p">())</span>
+<a name="line-980"></a> <span class="p">{</span>
+<a name="line-981"></a> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">imageIndexInFilterModel</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageFilterModel</span><span class="o">-&gt;</span><span class="n">indexForImageId</span><span class="p">(</span><span class="n">imageId</span><span class="p">);</span>
+<a name="line-982"></a>
+<a name="line-983"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="o">-&gt;</span><span class="n">isSelected</span><span class="p">(</span><span class="n">imageIndexInFilterModel</span><span class="p">))</span>
+<a name="line-984"></a> <span class="p">{</span>
+<a name="line-985"></a> <span class="n">imageState</span> <span class="o">|=</span> <span class="n">SelectedAll</span><span class="p">;</span>
+<a name="line-986"></a> <span class="p">}</span>
+<a name="line-987"></a> <span class="p">}</span>
+<a name="line-988"></a> <span class="p">}</span>
+<a name="line-989"></a>
+<a name="line-990"></a> <span class="k">return</span> <span class="n">imageState</span><span class="p">;</span>
+<a name="line-991"></a><span class="p">}</span>
<a name="line-992"></a>
-<a name="line-993"></a><span class="cm">/**</span>
-<a name="line-994"></a><span class="cm"> * Readds new tags to tag tree.</span>
-<a name="line-995"></a><span class="cm"> * @param currentBranch The branch from where the scan starts.</span>
-<a name="line-996"></a><span class="cm"> * @param currentRow The row of the currentBranch.</span>
-<a name="line-997"></a><span class="cm"> * @param tagAddressElements A list containing address elements. Example: {Country}, {City}...</span>
-<a name="line-998"></a><span class="cm"> * @param elementsData A list containing the name of each address element found in elements. Example: France, Paris...</span>
-<a name="line-999"></a><span class="cm"> */</span>
-<a name="line-1000"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">readdTag</span><span class="p">(</span><span class="n">TreeBranch</span><span class="o">*&amp;</span> <span class="n">currentBranch</span><span class="p">,</span> <span class="kt">int</span> <span class="n">currentRow</span><span class="p">,</span> <span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="n">tagAddressElements</span><span class="p">,</span> <span class="kt">int</span> <span class="n">currentAddressElementIndex</span><span class="p">)</span>
-<a name="line-1001"></a><span class="p">{</span>
-<a name="line-1002"></a><span class="hll"> <span class="kt">bool</span> <span class="n">found</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span><span class='error2'>&lt;--- Shadowed declaration</span>
-</span><a name="line-1003"></a> <span class="kt">int</span> <span class="n">foundIndex</span><span class="p">;</span>
-<a name="line-1004"></a>
-<a name="line-1005"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentAddressElementIndex</span> <span class="o">&gt;=</span> <span class="n">tagAddressElements</span><span class="p">.</span><span class="n">count</span><span class="p">())</span>
-<a name="line-1006"></a> <span class="p">{</span>
-<a name="line-1007"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-1008"></a> <span class="p">}</span>
-<a name="line-1009"></a>
-<a name="line-1010"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tagAddressElements</span><span class="p">[</span><span class="n">currentAddressElementIndex</span><span class="p">].</span><span class="n">tagType</span> <span class="o">==</span> <span class="n">TypeSpacer</span><span class="p">)</span>
-<a name="line-1011"></a> <span class="p">{</span>
-<a name="line-1012"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-1013"></a> <span class="p">{</span>
-<a name="line-1014"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">data</span> <span class="o">==</span> <span class="n">tagAddressElements</span><span class="p">[</span><span class="n">currentAddressElementIndex</span><span class="p">].</span><span class="n">tagName</span><span class="p">)</span>
-<a name="line-1015"></a> <span class="p">{</span>
-<a name="line-1016"></a> <span class="n">found</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-1017"></a> <span class="n">foundIndex</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
-<a name="line-1018"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-1019"></a> <span class="p">}</span>
-<a name="line-1020"></a> <span class="p">}</span>
-<a name="line-1021"></a>
-<a name="line-1022"></a> <span class="k">if</span> <span class="p">(</span><span class="n">found</span><span class="p">)</span>
-<a name="line-1023"></a> <span class="p">{</span>
-<a name="line-1024"></a> <span class="n">readdTag</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">foundIndex</span><span class="p">],</span> <span class="n">foundIndex</span><span class="p">,</span> <span class="n">tagAddressElements</span><span class="p">,</span> <span class="n">currentAddressElementIndex</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span>
-<a name="line-1025"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-1026"></a> <span class="p">}</span>
-<a name="line-1027"></a> <span class="k">else</span>
-<a name="line-1028"></a> <span class="p">{</span>
-<a name="line-1029"></a> <span class="c1">// recreates the spacer</span>
-<a name="line-1030"></a>
-<a name="line-1031"></a> <span class="n">QModelIndex</span> <span class="n">currentIndex</span><span class="p">;</span>
-<a name="line-1032"></a>
-<a name="line-1033"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">)</span>
-<a name="line-1034"></a> <span class="p">{</span>
-<a name="line-1035"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-1036"></a> <span class="p">}</span>
-<a name="line-1037"></a> <span class="k">else</span>
-<a name="line-1038"></a> <span class="p">{</span>
-<a name="line-1039"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">currentRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">currentBranch</span><span class="p">);</span>
-<a name="line-1040"></a> <span class="p">}</span>
-<a name="line-1041"></a>
-<a name="line-1042"></a> <span class="n">addSpacerTag</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">,</span><span class="n">tagAddressElements</span><span class="p">[</span><span class="n">currentAddressElementIndex</span><span class="p">].</span><span class="n">tagName</span><span class="p">);</span>
+<a name="line-993"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">setPositiveFilterIsActive</span><span class="p">(</span><span class="k">const</span> <span class="kt">bool</span> <span class="n">state</span><span class="p">)</span>
+<a name="line-994"></a><span class="p">{</span>
+<a name="line-995"></a> <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="p">)</span>
+<a name="line-996"></a> <span class="p">{</span>
+<a name="line-997"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapGlobalGroupState</span> <span class="o">|=</span> <span class="n">FilteredPositiveMask</span><span class="p">;</span>
+<a name="line-998"></a> <span class="p">}</span>
+<a name="line-999"></a> <span class="k">else</span>
+<a name="line-1000"></a> <span class="p">{</span>
+<a name="line-1001"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapGlobalGroupState</span> <span class="o">&amp;=</span> <span class="o">~</span><span class="n">FilteredPositiveMask</span><span class="p">;</span>
+<a name="line-1002"></a> <span class="p">}</span>
+<a name="line-1003"></a>
+<a name="line-1004"></a> <span class="c1">/// @todo Somehow, a delay is necessary before emitting this signal - probably the order in which the filtering</span>
+<a name="line-1005"></a> <span class="c1">/// is propagated to other parts of digikam is wrong or just takes too long</span>
+<a name="line-1006"></a>
+<a name="line-1007"></a> <span class="n">QTimer</span><span class="o">::</span><span class="n">singleShot</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalTilesOrSelectionChanged</span><span class="p">()));</span>
+<a name="line-1008"></a><span class="cm">/*</span>
+<a name="line-1009"></a><span class="cm"> emit signalTilesOrSelectionChanged();</span>
+<a name="line-1010"></a><span class="cm">*/</span>
+<a name="line-1011"></a><span class="p">}</span>
+<a name="line-1012"></a>
+<a name="line-1013"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">slotSelectionChanged</span><span class="p">(</span><span class="k">const</span> <span class="n">QItemSelection</span><span class="o">&amp;</span> <span class="n">selected</span><span class="p">,</span> <span class="k">const</span> <span class="n">QItemSelection</span><span class="o">&amp;</span> <span class="n">deselected</span><span class="p">)</span>
+<a name="line-1014"></a><span class="p">{</span>
+<a name="line-1015"></a> <span class="c1">/// @todo Buffer this information, update the tiles, etc.</span>
+<a name="line-1016"></a>
+<a name="line-1017"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">selected</span><span class="p">);</span>
+<a name="line-1018"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">deselected</span><span class="p">);</span>
+<a name="line-1019"></a>
+<a name="line-1020"></a> <span class="n">emit</span> <span class="nf">signalTilesOrSelectionChanged</span><span class="p">();</span>
+<a name="line-1021"></a><span class="p">}</span>
+<a name="line-1022"></a>
+<a name="line-1023"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">removeMarkerFromTileAndChildren</span><span class="p">(</span><span class="k">const</span> <span class="n">qlonglong</span> <span class="n">imageId</span><span class="p">,</span> <span class="k">const</span> <span class="n">TileIndex</span><span class="o">&amp;</span> <span class="n">markerTileIndex</span><span class="p">,</span> <span class="n">MyTile</span><span class="o">*</span> <span class="k">const</span> <span class="n">startTile</span><span class="p">,</span> <span class="k">const</span> <span class="kt">int</span> <span class="n">startTileLevel</span><span class="p">,</span> <span class="n">MyTile</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentTile</span><span class="p">)</span>
+<a name="line-1024"></a><span class="p">{</span>
+<a name="line-1025"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="n">currentParentTile</span> <span class="o">=</span> <span class="n">parentTile</span><span class="p">;</span>
+<a name="line-1026"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="n">currentTile</span> <span class="o">=</span> <span class="n">startTile</span><span class="p">;</span>
+<a name="line-1027"></a>
+<a name="line-1028"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">level</span> <span class="o">=</span> <span class="n">startTileLevel</span> <span class="p">;</span> <span class="n">level</span> <span class="o">&lt;=</span> <span class="n">markerTileIndex</span><span class="p">.</span><span class="n">level</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">level</span><span class="p">)</span>
+<a name="line-1029"></a> <span class="p">{</span>
+<a name="line-1030"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">currentTile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">imageId</span><span class="p">))</span>
+<a name="line-1031"></a> <span class="p">{</span>
+<a name="line-1032"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-1033"></a> <span class="p">}</span>
+<a name="line-1034"></a>
+<a name="line-1035"></a> <span class="n">currentTile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">removeOne</span><span class="p">(</span><span class="n">imageId</span><span class="p">);</span>
+<a name="line-1036"></a>
+<a name="line-1037"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentTile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-1038"></a> <span class="p">{</span>
+<a name="line-1039"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentTile</span> <span class="o">==</span> <span class="n">rootTile</span><span class="p">())</span>
+<a name="line-1040"></a> <span class="p">{</span>
+<a name="line-1041"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-1042"></a> <span class="p">}</span>
<a name="line-1043"></a>
-<a name="line-1044"></a> <span class="k">if</span> <span class="p">(</span> <span class="p">(</span><span class="n">tagAddressElements</span><span class="p">.</span><span class="n">count</span><span class="p">()</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">currentAddressElementIndex</span><span class="p">)</span>
-<a name="line-1045"></a> <span class="p">{</span>
-<a name="line-1046"></a> <span class="n">readdTag</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span>
-<a name="line-1047"></a> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span>
-<a name="line-1048"></a> <span class="n">tagAddressElements</span><span class="p">,</span>
-<a name="line-1049"></a> <span class="n">currentAddressElementIndex</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span>
-<a name="line-1050"></a> <span class="p">}</span>
-<a name="line-1051"></a>
-<a name="line-1052"></a> <span class="p">}</span>
-<a name="line-1053"></a>
-<a name="line-1054"></a> <span class="p">}</span>
-<a name="line-1055"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">tagAddressElements</span><span class="p">[</span><span class="n">currentAddressElementIndex</span><span class="p">].</span><span class="n">tagType</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">)</span>
-<a name="line-1056"></a> <span class="p">{</span>
-<a name="line-1057"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-1058"></a> <span class="p">{</span>
-<a name="line-1059"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">data</span> <span class="o">==</span> <span class="n">tagAddressElements</span><span class="p">[</span><span class="n">currentAddressElementIndex</span><span class="p">].</span><span class="n">tagName</span><span class="p">)</span>
-<a name="line-1060"></a> <span class="p">{</span>
-<a name="line-1061"></a> <span class="n">found</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-1062"></a> <span class="n">foundIndex</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
-<a name="line-1063"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-1064"></a> <span class="p">}</span>
-<a name="line-1065"></a> <span class="p">}</span>
-<a name="line-1066"></a>
-<a name="line-1067"></a> <span class="k">if</span> <span class="p">(</span><span class="n">found</span><span class="p">)</span>
-<a name="line-1068"></a> <span class="p">{</span>
-<a name="line-1069"></a> <span class="n">readdTag</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">foundIndex</span><span class="p">],</span>
-<a name="line-1070"></a> <span class="n">foundIndex</span> <span class="o">+</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span>
-<a name="line-1071"></a> <span class="n">tagAddressElements</span><span class="p">,</span>
-<a name="line-1072"></a> <span class="n">currentAddressElementIndex</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-1073"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-1074"></a> <span class="p">}</span>
-<a name="line-1075"></a>
-<a name="line-1076"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">found</span><span class="p">)</span>
-<a name="line-1077"></a> <span class="p">{</span>
-<a name="line-1078"></a> <span class="n">QModelIndex</span> <span class="n">currentIndex</span><span class="p">;</span>
+<a name="line-1044"></a> <span class="c1">// this tile can be deleted</span>
+<a name="line-1045"></a>
+<a name="line-1046"></a> <span class="n">tileDeleteChild</span><span class="p">(</span><span class="n">currentParentTile</span><span class="p">,</span> <span class="n">currentTile</span><span class="p">);</span>
+<a name="line-1047"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-1048"></a> <span class="p">}</span>
+<a name="line-1049"></a>
+<a name="line-1050"></a> <span class="n">currentParentTile</span> <span class="o">=</span> <span class="n">currentTile</span><span class="p">;</span>
+<a name="line-1051"></a> <span class="n">currentTile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">currentParentTile</span><span class="o">-&gt;</span><span class="n">getChild</span><span class="p">(</span><span class="n">markerTileIndex</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">level</span><span class="p">)));</span>
+<a name="line-1052"></a>
+<a name="line-1053"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">currentTile</span><span class="p">)</span>
+<a name="line-1054"></a> <span class="p">{</span>
+<a name="line-1055"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-1056"></a> <span class="p">}</span>
+<a name="line-1057"></a> <span class="p">}</span>
+<a name="line-1058"></a><span class="p">}</span>
+<a name="line-1059"></a>
+<a name="line-1060"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">addMarkerToTileAndChildren</span><span class="p">(</span><span class="k">const</span> <span class="n">qlonglong</span> <span class="n">imageId</span><span class="p">,</span> <span class="k">const</span> <span class="n">TileIndex</span><span class="o">&amp;</span> <span class="n">markerTileIndex</span><span class="p">,</span> <span class="n">MyTile</span><span class="o">*</span> <span class="k">const</span> <span class="n">startTile</span><span class="p">,</span> <span class="k">const</span> <span class="kt">int</span> <span class="n">startTileLevel</span><span class="p">)</span>
+<a name="line-1061"></a><span class="p">{</span>
+<a name="line-1062"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="n">currentTile</span> <span class="o">=</span> <span class="n">startTile</span><span class="p">;</span>
+<a name="line-1063"></a>
+<a name="line-1064"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">level</span> <span class="o">=</span> <span class="n">startTileLevel</span> <span class="p">;</span> <span class="n">level</span> <span class="o">&lt;=</span> <span class="n">markerTileIndex</span><span class="p">.</span><span class="n">level</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">level</span><span class="p">)</span>
+<a name="line-1065"></a> <span class="p">{</span>
+<a name="line-1066"></a> <span class="c1">/// @todo This could be possible until all code paths are checked</span>
+<a name="line-1067"></a>
+<a name="line-1068"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">currentTile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">imageId</span><span class="p">))</span>
+<a name="line-1069"></a> <span class="p">{</span>
+<a name="line-1070"></a> <span class="n">currentTile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">imageId</span><span class="p">);</span>
+<a name="line-1071"></a> <span class="p">}</span>
+<a name="line-1072"></a>
+<a name="line-1073"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentTile</span><span class="o">-&gt;</span><span class="n">childrenEmpty</span><span class="p">())</span>
+<a name="line-1074"></a> <span class="p">{</span>
+<a name="line-1075"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-1076"></a> <span class="p">}</span>
+<a name="line-1077"></a>
+<a name="line-1078"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="n">nextTile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">currentTile</span><span class="o">-&gt;</span><span class="n">getChild</span><span class="p">(</span><span class="n">markerTileIndex</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">level</span><span class="p">)));</span>
<a name="line-1079"></a>
-<a name="line-1080"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">)</span>
-<a name="line-1081"></a> <span class="p">{</span>
-<a name="line-1082"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-1083"></a> <span class="p">}</span>
-<a name="line-1084"></a> <span class="k">else</span>
-<a name="line-1085"></a> <span class="p">{</span>
-<a name="line-1086"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">currentRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">currentBranch</span><span class="p">);</span>
-<a name="line-1087"></a> <span class="p">}</span>
-<a name="line-1088"></a>
-<a name="line-1089"></a> <span class="n">addNewTag</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">,</span> <span class="n">tagAddressElements</span><span class="p">[</span><span class="n">currentAddressElementIndex</span><span class="p">].</span><span class="n">tagName</span><span class="p">,</span>
-<a name="line-1090"></a> <span class="n">tagAddressElements</span><span class="p">[</span><span class="n">currentAddressElementIndex</span><span class="p">].</span><span class="n">tipName</span><span class="p">);</span>
-<a name="line-1091"></a>
-<a name="line-1092"></a> <span class="k">if</span> <span class="p">((</span><span class="n">tagAddressElements</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">currentAddressElementIndex</span><span class="p">)</span>
-<a name="line-1093"></a> <span class="p">{</span>
-<a name="line-1094"></a> <span class="n">readdTag</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">],</span>
-<a name="line-1095"></a> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span>
-<a name="line-1096"></a> <span class="n">tagAddressElements</span><span class="p">,</span>
-<a name="line-1097"></a> <span class="n">currentAddressElementIndex</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-1098"></a> <span class="p">}</span>
-<a name="line-1099"></a> <span class="p">}</span>
-<a name="line-1100"></a> <span class="p">}</span>
-<a name="line-1101"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">tagAddressElements</span><span class="p">[</span><span class="n">currentAddressElementIndex</span><span class="p">].</span><span class="n">tagType</span> <span class="o">==</span> <span class="n">TypeChild</span><span class="p">)</span>
-<a name="line-1102"></a> <span class="p">{</span>
-<a name="line-1103"></a><span class="hll"> <span class="kt">bool</span> <span class="n">found</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-1104"></a>
-<a name="line-1105"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-1106"></a> <span class="p">{</span>
-<a name="line-1107"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">data</span> <span class="o">==</span> <span class="n">tagAddressElements</span><span class="p">[</span><span class="n">currentAddressElementIndex</span><span class="p">].</span><span class="n">tagName</span><span class="p">)</span>
-<a name="line-1108"></a> <span class="p">{</span>
-<a name="line-1109"></a> <span class="n">found</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-1110"></a> <span class="n">foundIndex</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
-<a name="line-1111"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-1112"></a> <span class="p">}</span>
-<a name="line-1113"></a> <span class="p">}</span>
-<a name="line-1114"></a>
-<a name="line-1115"></a> <span class="k">if</span> <span class="p">(</span><span class="n">found</span><span class="p">)</span>
-<a name="line-1116"></a> <span class="p">{</span>
-<a name="line-1117"></a> <span class="n">readdTag</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">[</span><span class="n">foundIndex</span><span class="p">],</span>
-<a name="line-1118"></a> <span class="n">foundIndex</span><span class="o">+</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">+</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span>
-<a name="line-1119"></a> <span class="n">tagAddressElements</span><span class="p">,</span> <span class="n">currentAddressElementIndex</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-1120"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-1121"></a> <span class="p">}</span>
-<a name="line-1122"></a> <span class="k">else</span>
-<a name="line-1123"></a> <span class="p">{</span>
-<a name="line-1124"></a> <span class="n">QModelIndex</span> <span class="n">currentIndex</span><span class="p">;</span>
-<a name="line-1125"></a>
-<a name="line-1126"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">)</span>
-<a name="line-1127"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-1128"></a> <span class="k">else</span>
-<a name="line-1129"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">currentRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">currentBranch</span><span class="p">);</span>
-<a name="line-1130"></a>
-<a name="line-1131"></a> <span class="n">addSpacerTag</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">,</span><span class="n">tagAddressElements</span><span class="p">[</span><span class="n">currentAddressElementIndex</span><span class="p">].</span><span class="n">tagName</span><span class="p">);</span>
-<a name="line-1132"></a>
-<a name="line-1133"></a> <span class="k">if</span> <span class="p">(</span> <span class="p">(</span><span class="n">tagAddressElements</span><span class="p">.</span><span class="n">count</span><span class="p">()</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">currentAddressElementIndex</span><span class="p">)</span>
-<a name="line-1134"></a> <span class="p">{</span>
-<a name="line-1135"></a> <span class="n">readdTag</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span>
-<a name="line-1136"></a> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span>
-<a name="line-1137"></a> <span class="n">tagAddressElements</span><span class="p">,</span>
-<a name="line-1138"></a> <span class="n">currentAddressElementIndex</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span>
-<a name="line-1139"></a> <span class="p">}</span>
-<a name="line-1140"></a> <span class="p">}</span>
-<a name="line-1141"></a> <span class="p">}</span>
-<a name="line-1142"></a><span class="p">}</span>
-<a name="line-1143"></a>
-<a name="line-1144"></a><span class="cm">/**</span>
-<a name="line-1145"></a><span class="cm"> * Takes each tag contained in tagAddressList and adds it to the tag tree.</span>
-<a name="line-1146"></a><span class="cm"> * @param tagAddressList A list containing new tags.</span>
-<a name="line-1147"></a><span class="cm"> */</span>
-<a name="line-1148"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">readdNewTags</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;&amp;</span> <span class="n">tagAddressList</span><span class="p">)</span>
-<a name="line-1149"></a><span class="p">{</span>
-<a name="line-1150"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">tagAddressList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-1151"></a> <span class="p">{</span>
-<a name="line-1152"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="n">currentAddressTag</span> <span class="o">=</span> <span class="n">tagAddressList</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
-<a name="line-1153"></a> <span class="n">readdTag</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">currentAddressTag</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-1154"></a> <span class="p">}</span>
-<a name="line-1155"></a><span class="p">}</span>
-<a name="line-1156"></a>
-<a name="line-1157"></a><span class="cm">/**</span>
-<a name="line-1158"></a><span class="cm"> * Gets the address of a spacer. Address means the path from rootTag to currentBranch</span>
-<a name="line-1159"></a><span class="cm"> * @param currentBranch The branch where the scan stops.</span>
-<a name="line-1160"></a><span class="cm"> * @return The tag address of currentBranch</span>
-<a name="line-1161"></a><span class="cm"> */</span>
-<a name="line-1162"></a><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">getSpacerAddress</span><span class="p">(</span><span class="n">TreeBranch</span><span class="o">*</span> <span class="n">currentBranch</span><span class="p">)</span>
-<a name="line-1163"></a><span class="p">{</span>
-<a name="line-1164"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="n">spacerAddress</span><span class="p">;</span>
-<a name="line-1165"></a>
-<a name="line-1166"></a> <span class="k">while</span> <span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">!=</span> <span class="k">nullptr</span><span class="p">)</span>
-<a name="line-1167"></a> <span class="p">{</span>
-<a name="line-1168"></a> <span class="n">TagData</span> <span class="n">currentTag</span><span class="p">;</span>
-<a name="line-1169"></a> <span class="n">currentTag</span><span class="p">.</span><span class="n">tagName</span> <span class="o">=</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">;</span>
-<a name="line-1170"></a> <span class="n">currentTag</span><span class="p">.</span><span class="n">tagType</span> <span class="o">=</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">type</span><span class="p">;</span>
-<a name="line-1171"></a>
-<a name="line-1172"></a> <span class="n">spacerAddress</span><span class="p">.</span><span class="n">prepend</span><span class="p">(</span><span class="n">currentTag</span><span class="p">);</span>
-<a name="line-1173"></a> <span class="n">currentBranch</span> <span class="o">=</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">parent</span><span class="p">;</span>
-<a name="line-1174"></a> <span class="p">}</span>
-<a name="line-1175"></a>
-<a name="line-1176"></a> <span class="k">return</span> <span class="n">spacerAddress</span><span class="p">;</span>
-<a name="line-1177"></a><span class="p">}</span>
-<a name="line-1178"></a>
-<a name="line-1179"></a><span class="cm">/**</span>
-<a name="line-1180"></a><span class="cm"> * Gets the spacers addresses below currentBranch. Address means the path from rootTag to currentBranch.</span>
-<a name="line-1181"></a><span class="cm"> * @param currentBranch The branch from where the search starts.</span>
-<a name="line-1182"></a><span class="cm"> */</span>
-<a name="line-1183"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">climbTreeAndGetSpacers</span><span class="p">(</span><span class="k">const</span> <span class="n">TreeBranch</span><span class="o">*</span> <span class="n">currentBranch</span><span class="p">)</span>
-<a name="line-1184"></a><span class="p">{</span>
-<a name="line-1185"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-1186"></a> <span class="p">{</span>
-<a name="line-1187"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="n">currentSpacerAddress</span><span class="p">;</span>
-<a name="line-1188"></a> <span class="n">currentSpacerAddress</span> <span class="o">=</span> <span class="n">getSpacerAddress</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
-<a name="line-1189"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">savedSpacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentSpacerAddress</span><span class="p">);</span>
-<a name="line-1190"></a> <span class="n">climbTreeAndGetSpacers</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
-<a name="line-1191"></a> <span class="p">}</span>
-<a name="line-1192"></a>
-<a name="line-1193"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-1194"></a> <span class="p">{</span>
-<a name="line-1195"></a> <span class="n">climbTreeAndGetSpacers</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">newChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
-<a name="line-1196"></a> <span class="p">}</span>
-<a name="line-1197"></a>
-<a name="line-1198"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-1199"></a> <span class="p">{</span>
-<a name="line-1200"></a> <span class="n">climbTreeAndGetSpacers</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">oldChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
-<a name="line-1201"></a> <span class="p">}</span>
-<a name="line-1202"></a><span class="p">}</span>
-<a name="line-1203"></a>
-<a name="line-1204"></a><span class="cm">/**</span>
-<a name="line-1205"></a><span class="cm"> * Gets all spacers.</span>
-<a name="line-1206"></a><span class="cm"> * @return The spacer list.</span>
-<a name="line-1207"></a><span class="cm"> */</span>
-<a name="line-1208"></a><span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">getSpacers</span><span class="p">()</span>
-<a name="line-1209"></a><span class="p">{</span>
-<a name="line-1210"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">savedSpacerList</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
-<a name="line-1211"></a> <span class="n">climbTreeAndGetSpacers</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">);</span>
-<a name="line-1212"></a>
-<a name="line-1213"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">savedSpacerList</span><span class="p">;</span>
-<a name="line-1214"></a><span class="p">}</span>
-<a name="line-1215"></a>
-<a name="line-1216"></a><span class="cm">/**</span>
-<a name="line-1217"></a><span class="cm"> * Add tags from host application to the tag tree.</span>
-<a name="line-1218"></a><span class="cm"> * @param parentBranch The branch that will be parent for the old tag.</span>
-<a name="line-1219"></a><span class="cm"> * @param currentRow The row where this external tag will be added.</span>
-<a name="line-1220"></a><span class="cm"> */</span>
-<a name="line-1221"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">addExternalTags</span><span class="p">(</span><span class="n">TreeBranch</span><span class="o">*</span> <span class="n">parentBranch</span><span class="p">,</span> <span class="kt">int</span> <span class="n">currentRow</span><span class="p">)</span>
-<a name="line-1222"></a><span class="p">{</span>
-<a name="line-1223"></a> <span class="n">QModelIndex</span> <span class="n">parentIndex</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">currentRow</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">parentBranch</span><span class="p">);</span>
-<a name="line-1224"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">howManyRows</span> <span class="o">=</span> <span class="n">rowCount</span><span class="p">(</span><span class="n">parentIndex</span><span class="p">);</span>
-<a name="line-1225"></a>
-<a name="line-1226"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">howManyRows</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-1227"></a> <span class="p">{</span>
-<a name="line-1228"></a> <span class="n">QModelIndex</span> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">index</span><span class="p">(</span><span class="n">i</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="n">parentIndex</span><span class="p">);</span>
-<a name="line-1229"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">currentBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">);</span> <span class="c1">//currentIndex.isValid() ? static_cast&lt;TreeBranch*&gt;(currentIndex.internalPointer()) : d-&gt;rootTag;</span>
-<a name="line-1230"></a>
-<a name="line-1231"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">)</span>
-<a name="line-1232"></a> <span class="p">{</span>
-<a name="line-1233"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-1234"></a> <span class="p">}</span>
-<a name="line-1235"></a>
-<a name="line-1236"></a> <span class="n">addExternalTags</span><span class="p">(</span><span class="n">currentBranch</span><span class="p">,</span><span class="n">i</span><span class="p">);</span>
-<a name="line-1237"></a> <span class="p">}</span>
-<a name="line-1238"></a><span class="p">}</span>
-<a name="line-1239"></a>
-<a name="line-1240"></a><span class="cm">/**</span>
-<a name="line-1241"></a><span class="cm"> * Add all external tags to the tag tree.</span>
-<a name="line-1242"></a><span class="cm"> */</span>
-<a name="line-1243"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">addAllExternalTagsToTreeView</span><span class="p">()</span>
-<a name="line-1244"></a><span class="p">{</span>
-<a name="line-1245"></a> <span class="n">addExternalTags</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rootTag</span><span class="p">,</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-1246"></a><span class="p">}</span>
-<a name="line-1247"></a>
-<a name="line-1248"></a><span class="cm">/**</span>
-<a name="line-1249"></a><span class="cm"> * Adds all spacers found in spacerList to the tag tree.</span>
-<a name="line-1250"></a><span class="cm"> */</span>
-<a name="line-1251"></a><span class="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">addAllSpacersToTag</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">currentIndex</span><span class="p">,</span> <span class="k">const</span> <span class="n">QStringList</span> <span class="n">spacerList</span><span class="p">,</span> <span class="kt">int</span> <span class="n">spacerListIndex</span><span class="p">)</span>
-<a name="line-1252"></a><span class="p">{</span>
-<a name="line-1253"></a> <span class="k">if</span> <span class="p">(</span><span class="n">spacerListIndex</span> <span class="o">&gt;=</span> <span class="n">spacerList</span><span class="p">.</span><span class="n">count</span><span class="p">())</span>
-<a name="line-1254"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-1255"></a>
-<a name="line-1256"></a><span class="cm">/*</span>
-<a name="line-1257"></a><span class="cm"> currentIndex.isValid() ? static_cast&lt;TreeBranch*&gt;(currentIndex.internalPointer()) : d-&gt;rootTag;</span>
-<a name="line-1258"></a><span class="cm">*/</span>
-<a name="line-1259"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">currentBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">);</span>
-<a name="line-1260"></a>
-<a name="line-1261"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-1262"></a> <span class="p">{</span>
-<a name="line-1263"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">data</span> <span class="o">==</span> <span class="n">spacerList</span><span class="p">[</span><span class="n">spacerListIndex</span><span class="p">])</span>
-<a name="line-1264"></a> <span class="p">{</span>
-<a name="line-1265"></a> <span class="n">QModelIndex</span> <span class="n">foundIndex</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
-<a name="line-1266"></a> <span class="n">addAllSpacersToTag</span><span class="p">(</span><span class="n">foundIndex</span><span class="p">,</span> <span class="n">spacerList</span><span class="p">,</span> <span class="n">spacerListIndex</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-1267"></a>
-<a name="line-1268"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-1269"></a> <span class="p">}</span>
-<a name="line-1270"></a> <span class="p">}</span>
-<a name="line-1271"></a>
-<a name="line-1272"></a> <span class="n">addSpacerTag</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">,</span> <span class="n">spacerList</span><span class="p">[</span><span class="n">spacerListIndex</span><span class="p">]);</span>
-<a name="line-1273"></a> <span class="n">QModelIndex</span> <span class="n">newIndex</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span>
-<a name="line-1274"></a> <span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">[</span><span class="n">currentBranch</span><span class="o">-&gt;</span><span class="n">spacerChildren</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]);</span>
-<a name="line-1275"></a> <span class="n">addAllSpacersToTag</span><span class="p">(</span><span class="n">newIndex</span><span class="p">,</span> <span class="n">spacerList</span><span class="p">,</span> <span class="n">spacerListIndex</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-1276"></a><span class="p">}</span>
-<a name="line-1277"></a>
-<a name="line-1278"></a><span class="cm">/**</span>
-<a name="line-1279"></a><span class="cm"> * Gets the type of a tag found at index.</span>
-<a name="line-1280"></a><span class="cm"> * @param index The index of the tag.</span>
-<a name="line-1281"></a><span class="cm"> * @return The type of the tag found at index.</span>
-<a name="line-1282"></a><span class="cm"> */</span>
-<a name="line-1283"></a><span class="n">Type</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">getTagType</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">index</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-1284"></a><span class="p">{</span>
-<a name="line-1285"></a><span class="cm">/*</span>
-<a name="line-1286"></a><span class="cm"> index.isValid() ? static_cast&lt;TreeBranch*&gt;(index.internalPointer()) : d-&gt;rootTag;</span>
-<a name="line-1287"></a><span class="cm">*/</span>
-<a name="line-1288"></a> <span class="k">const</span> <span class="n">TreeBranch</span><span class="o">*</span> <span class="k">const</span> <span class="n">treeBranch</span> <span class="o">=</span> <span class="n">branchFromIndex</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
-<a name="line-1289"></a>
-<a name="line-1290"></a> <span class="k">return</span> <span class="n">treeBranch</span><span class="o">-&gt;</span><span class="n">type</span><span class="p">;</span>
-<a name="line-1291"></a><span class="p">}</span>
-<a name="line-1292"></a>
-<a name="line-1293"></a><span class="p">}</span> <span class="c1">// namespace Digikam</span>
+<a name="line-1080"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">nextTile</span><span class="p">)</span>
+<a name="line-1081"></a> <span class="p">{</span>
+<a name="line-1082"></a> <span class="n">nextTile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">tileNew</span><span class="p">());</span>
+<a name="line-1083"></a> <span class="n">currentTile</span><span class="o">-&gt;</span><span class="n">addChild</span><span class="p">(</span><span class="n">markerTileIndex</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">level</span><span class="p">),</span> <span class="n">nextTile</span><span class="p">);</span>
+<a name="line-1084"></a> <span class="p">}</span>
+<a name="line-1085"></a>
+<a name="line-1086"></a> <span class="n">currentTile</span> <span class="o">=</span> <span class="n">nextTile</span><span class="p">;</span>
+<a name="line-1087"></a> <span class="p">}</span>
+<a name="line-1088"></a><span class="p">}</span>
+<a name="line-1089"></a>
+<a name="line-1090"></a><span class="p">}</span> <span class="c1">// namespace Digikam</span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/22.html b/static/reports/cppcheck/master/22.html
index 81a7de135..e755f449a 100644
--- a/static/reports/cppcheck/master/22.html
+++ b/static/reports/cppcheck/master/22.html
@@ -1,703 +1,1983 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/utilities/geolocation/geoiface/reversegeocoding/parsetagstring.h </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/utilities/setup/metadata/setupmetadata.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> parsetagstring.h</p>
-<a href='22.html#line-50'> shadowVar 50</a><a href='22.html#line-50'> shadowVar 50</a><a href='22.html#line-50'> shadowVar 50</a><a href='22.html#line-169'> shadowVar 169</a><a href='22.html#line-216'> shadowVar 216</a><a href='22.html#line-252'> shadowVar 252</a>
+ <p id="filename"><a href="index.html">Defects:</a> setupmetadata.cpp</p>
+<a href='22.html#line-884'> shadowVar 884</a><a href='22.html#line-896'> shadowVar 896</a><a href='22.html#line-901'> shadowVar 901</a><a href='22.html#line-906'> shadowVar 906</a>
</div>
<div id="content">
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
-279</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+519
+520
+521
+522
+523
+524
+525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+539
+540
+541
+542
+543
+544
+545
+546
+547
+548
+549
+550
+551
+552
+553
+554
+555
+556
+557
+558
+559
+560
+561
+562
+563
+564
+565
+566
+567
+568
+569
+570
+571
+572
+573
+574
+575
+576
+577
+578
+579
+580
+581
+582
+583
+584
+585
+586
+587
+588
+589
+590
+591
+592
+593
+594
+595
+596
+597
+598
+599
+600
+601
+602
+603
+604
+605
+606
+607
+608
+609
+610
+611
+612
+613
+614
+615
+616
+617
+618
+619
+620
+621
+622
+623
+624
+625
+626
+627
+628
+629
+630
+631
+632
+633
+634
+635
+636
+637
+638
+639
+640
+641
+642
+643
+644
+645
+646
+647
+648
+649
+650
+651
+652
+653
+654
+655
+656
+657
+658
+659
+660
+661
+662
+663
+664
+665
+666
+667
+668
+669
+670
+671
+672
+673
+674
+675
+676
+677
+678
+679
+680
+681
+682
+683
+684
+685
+686
+687
+688
+689
+690
+691
+692
+693
+694
+695
+696
+697
+698
+699
+700
+701
+702
+703
+704
+705
+706
+707
+708
+709
+710
+711
+712
+713
+714
+715
+716
+717
+718
+719
+720
+721
+722
+723
+724
+725
+726
+727
+728
+729
+730
+731
+732
+733
+734
+735
+736
+737
+738
+739
+740
+741
+742
+743
+744
+745
+746
+747
+748
+749
+750
+751
+752
+753
+754
+755
+756
+757
+758
+759
+760
+761
+762
+763
+764
+765
+766
+767
+768
+769
+770
+771
+772
+773
+774
+775
+776
+777
+778
+779
+780
+781
+782
+783
+784
+785
+786
+787
+788
+789
+790
+791
+792
+793
+794
+795
+796
+797
+798
+799
+800
+801
+802
+803
+804
+805
+806
+807
+808
+809
+810
+811
+812
+813
+814
+815
+816
+817
+818
+819
+820
+821
+822
+823
+824
+825
+826
+827
+828
+829
+830
+831
+832
+833
+834
+835
+836
+837
+838
+839
+840
+841
+842
+843
+844
+845
+846
+847
+848
+849
+850
+851
+852
+853
+854
+855
+856
+857
+858
+859
+860
+861
+862
+863
+864
+865
+866
+867
+868
+869
+870
+871
+872
+873
+874
+875
+876
+877
+878
+879
+880
+881
+882
+883
+884
+885
+886
+887
+888
+889
+890
+891
+892
+893
+894
+895
+896
+897
+898
+899
+900
+901
+902
+903
+904
+905
+906
+907
+908
+909
+910
+911
+912
+913
+914
+915
+916
+917
+918
+919</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
-<a name="line-6"></a><span class="cm"> * Date : 2010-05-12</span>
-<a name="line-7"></a><span class="cm"> * Description : Parses retrieved data into tag string.</span>
+<a name="line-6"></a><span class="cm"> * Date : 2003-08-03</span>
+<a name="line-7"></a><span class="cm"> * Description : setup Metadata tab.</span>
<a name="line-8"></a><span class="cm"> *</span>
-<a name="line-9"></a><span class="cm"> * Copyright (C) 2010 by Michael G. Hansen &lt;mike at mghansen dot de&gt;</span>
-<a name="line-10"></a><span class="cm"> * Copyright (C) 2010 by Gabriel Voicu &lt;ping dot gabi at gmail dot com&gt;</span>
-<a name="line-11"></a><span class="cm"> *</span>
-<a name="line-12"></a><span class="cm"> * This program is free software; you can redistribute it</span>
-<a name="line-13"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
-<a name="line-14"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
-<a name="line-15"></a><span class="cm"> * either version 2, or (at your option)</span>
-<a name="line-16"></a><span class="cm"> * any later version.</span>
-<a name="line-17"></a><span class="cm"> *</span>
-<a name="line-18"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
-<a name="line-19"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
-<a name="line-20"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
-<a name="line-21"></a><span class="cm"> * GNU General Public License for more details.</span>
-<a name="line-22"></a><span class="cm"> *</span>
-<a name="line-23"></a><span class="cm"> * ============================================================ */</span>
-<a name="line-24"></a>
-<a name="line-25"></a><span class="cp">#ifndef DIGIKAM_PARSE_TAG_STRING_H</span>
-<a name="line-26"></a><span class="cp">#define DIGIKAM_PARSE_TAG_STRING_H</span>
-<a name="line-27"></a>
-<a name="line-28"></a><span class="c1">// local includes</span>
-<a name="line-29"></a>
-<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
-<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&quot;backend-rg.h&quot;</span><span class="cp"></span>
-<a name="line-32"></a>
-<a name="line-33"></a><span class="n">namespace</span> <span class="n">Digikam</span>
-<a name="line-34"></a><span class="p">{</span>
-<a name="line-35"></a>
-<a name="line-36"></a><span class="n">QStringList</span> <span class="n">makeTagString</span><span class="p">(</span><span class="k">const</span> <span class="n">RGInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">,</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">inputFormat</span><span class="p">,</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">backendName</span><span class="p">)</span>
-<a name="line-37"></a><span class="p">{</span>
-<a name="line-38"></a> <span class="n">QString</span> <span class="n">auxReturnedFormat</span> <span class="o">=</span> <span class="n">inputFormat</span><span class="p">;</span>
-<a name="line-39"></a> <span class="n">QString</span> <span class="n">returnedAddress</span> <span class="o">=</span> <span class="n">inputFormat</span><span class="p">;</span>
-<a name="line-40"></a> <span class="n">QString</span> <span class="n">returnedFormat</span><span class="p">;</span>
-<a name="line-41"></a>
-<a name="line-42"></a> <span class="n">QStringList</span> <span class="n">returnedAddressElements</span><span class="p">;</span>
-<a name="line-43"></a>
-<a name="line-44"></a> <span class="kt">int</span> <span class="n">indexFBracket</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
-<a name="line-45"></a>
-<a name="line-46"></a> <span class="k">while</span> <span class="p">((</span><span class="n">indexFBracket</span> <span class="o">=</span> <span class="n">returnedAddress</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{&quot;</span><span class="p">)))</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-47"></a> <span class="p">{</span>
-<a name="line-48"></a> <span class="kt">int</span> <span class="n">indexLBracket</span> <span class="o">=</span> <span class="n">returnedAddress</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;}&quot;</span><span class="p">));</span>
-<a name="line-49"></a> <span class="n">QString</span> <span class="n">humanTag</span> <span class="o">=</span> <span class="n">returnedAddress</span><span class="p">.</span><span class="n">mid</span><span class="p">(</span><span class="n">indexFBracket</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">indexLBracket</span><span class="o">-</span><span class="n">indexFBracket</span><span class="o">-</span><span class="mi">1</span><span class="p">);</span>
-<a name="line-50"></a><span class="hll"> <span class="kt">int</span> <span class="n">indexFormatFBracket</span> <span class="o">=</span> <span class="n">auxReturnedFormat</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{&quot;</span><span class="p">));</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span><span class='error2'>&lt;--- Shadowed declaration</span>
-</span><a name="line-51"></a> <span class="n">auxReturnedFormat</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">indexFormatFBracket</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">humanTag</span><span class="p">.</span><span class="n">length</span><span class="p">()</span> <span class="o">+</span> <span class="mi">3</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
-<a name="line-52"></a> <span class="kt">bool</span> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-53"></a> <span class="n">QString</span> <span class="n">result</span><span class="p">;</span>
+<a name="line-9"></a><span class="cm"> * Copyright (C) 2003-2004 by Ralf Holzer &lt;ralf at well dot com&gt;</span>
+<a name="line-10"></a><span class="cm"> * Copyright (C) 2003-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&gt;</span>
+<a name="line-11"></a><span class="cm"> * Copyright (C) 2009-2012 by Marcel Wiesweg &lt;marcel dot wiesweg at gmx dot de&gt;</span>
+<a name="line-12"></a><span class="cm"> * Copyright (C) 2017 by Simon Frei &lt;freisim93 at gmail dot com&gt;</span>
+<a name="line-13"></a><span class="cm"> *</span>
+<a name="line-14"></a><span class="cm"> * This program is free software; you can redistribute it</span>
+<a name="line-15"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
+<a name="line-16"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
+<a name="line-17"></a><span class="cm"> * either version 2, or (at your option)</span>
+<a name="line-18"></a><span class="cm"> * any later version.</span>
+<a name="line-19"></a><span class="cm"> *</span>
+<a name="line-20"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
+<a name="line-21"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
+<a name="line-22"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
+<a name="line-23"></a><span class="cm"> * GNU General Public License for more details.</span>
+<a name="line-24"></a><span class="cm"> *</span>
+<a name="line-25"></a><span class="cm"> * ============================================================ */</span>
+<a name="line-26"></a>
+<a name="line-27"></a><span class="cp">#include</span> <span class="cpf">&quot;setupmetadata.h&quot;</span><span class="cp"></span>
+<a name="line-28"></a>
+<a name="line-29"></a><span class="c1">// Qt includes</span>
+<a name="line-30"></a>
+<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QApplication&gt;</span><span class="cp"></span>
+<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QButtonGroup&gt;</span><span class="cp"></span>
+<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QCheckBox&gt;</span><span class="cp"></span>
+<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QComboBox&gt;</span><span class="cp"></span>
+<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QFrame&gt;</span><span class="cp"></span>
+<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QGridLayout&gt;</span><span class="cp"></span>
+<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&lt;QGroupBox&gt;</span><span class="cp"></span>
+<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&lt;QIcon&gt;</span><span class="cp"></span>
+<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&lt;QLabel&gt;</span><span class="cp"></span>
+<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&lt;QLineEdit&gt;</span><span class="cp"></span>
+<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&lt;QMessageBox&gt;</span><span class="cp"></span>
+<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&lt;QPointer&gt;</span><span class="cp"></span>
+<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&lt;QRadioButton&gt;</span><span class="cp"></span>
+<a name="line-44"></a><span class="cp">#include</span> <span class="cpf">&lt;QStandardPaths&gt;</span><span class="cp"></span>
+<a name="line-45"></a><span class="cp">#include</span> <span class="cpf">&lt;QStyle&gt;</span><span class="cp"></span>
+<a name="line-46"></a><span class="cp">#include</span> <span class="cpf">&lt;QToolButton&gt;</span><span class="cp"></span>
+<a name="line-47"></a><span class="cp">#include</span> <span class="cpf">&lt;QVBoxLayout&gt;</span><span class="cp"></span>
+<a name="line-48"></a>
+<a name="line-49"></a><span class="c1">// KDE includes</span>
+<a name="line-50"></a>
+<a name="line-51"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
+<a name="line-52"></a>
+<a name="line-53"></a><span class="c1">// Local includes</span>
<a name="line-54"></a>
-<a name="line-55"></a> <span class="k">if</span> <span class="p">(</span><span class="n">backendName</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;OSM&quot;</span><span class="p">))</span>
-<a name="line-56"></a> <span class="p">{</span>
-<a name="line-57"></a> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Country&quot;</span><span class="p">))</span>
-<a name="line-58"></a> <span class="p">{</span>
-<a name="line-59"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;country&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-60"></a> <span class="p">{</span>
-<a name="line-61"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;country&quot;</span><span class="p">)];</span>
-<a name="line-62"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{Country}&quot;</span><span class="p">));</span>
-<a name="line-63"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-64"></a> <span class="p">}</span>
-<a name="line-65"></a> <span class="p">}</span>
-<a name="line-66"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;State district&quot;</span><span class="p">))</span>
-<a name="line-67"></a> <span class="p">{</span>
-<a name="line-68"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;state_district&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-69"></a> <span class="p">{</span>
-<a name="line-70"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;state_district&quot;</span><span class="p">)];</span>
-<a name="line-71"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{State district}&quot;</span><span class="p">));</span>
-<a name="line-72"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-73"></a> <span class="p">}</span>
-<a name="line-74"></a> <span class="p">}</span>
-<a name="line-75"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;County&quot;</span><span class="p">))</span>
-<a name="line-76"></a> <span class="p">{</span>
-<a name="line-77"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;county&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-78"></a> <span class="p">{</span>
-<a name="line-79"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;county&quot;</span><span class="p">)];</span>
-<a name="line-80"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{County}&quot;</span><span class="p">));</span>
-<a name="line-81"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-82"></a> <span class="p">}</span>
-<a name="line-83"></a> <span class="p">}</span>
-<a name="line-84"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;City&quot;</span><span class="p">))</span>
-<a name="line-85"></a> <span class="p">{</span>
-<a name="line-86"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;city&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-87"></a> <span class="p">{</span>
-<a name="line-88"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;city&quot;</span><span class="p">)];</span>
-<a name="line-89"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{City}&quot;</span><span class="p">));</span>
-<a name="line-90"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-91"></a> <span class="p">}</span>
-<a name="line-92"></a> <span class="p">}</span>
-<a name="line-93"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;City district&quot;</span><span class="p">))</span>
-<a name="line-94"></a> <span class="p">{</span>
-<a name="line-95"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;city_district&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-96"></a> <span class="p">{</span>
-<a name="line-97"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;city_district&quot;</span><span class="p">)];</span>
-<a name="line-98"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{City district}&quot;</span><span class="p">));</span>
-<a name="line-99"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-100"></a> <span class="p">}</span>
-<a name="line-101"></a> <span class="p">}</span>
-<a name="line-102"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Suburb&quot;</span><span class="p">))</span>
-<a name="line-103"></a> <span class="p">{</span>
-<a name="line-104"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;suburb&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-105"></a> <span class="p">{</span>
-<a name="line-106"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;suburb&quot;</span><span class="p">)];</span>
-<a name="line-107"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{Suburb}&quot;</span><span class="p">));</span>
-<a name="line-108"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-109"></a> <span class="p">}</span>
-<a name="line-110"></a> <span class="p">}</span>
-<a name="line-111"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Street&quot;</span><span class="p">))</span>
-<a name="line-112"></a> <span class="p">{</span>
-<a name="line-113"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;road&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-114"></a> <span class="p">{</span>
-<a name="line-115"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;road&quot;</span><span class="p">)];</span>
-<a name="line-116"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{Street}&quot;</span><span class="p">));</span>
-<a name="line-117"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-118"></a> <span class="p">}</span>
-<a name="line-119"></a> <span class="p">}</span>
-<a name="line-120"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;State&quot;</span><span class="p">))</span>
-<a name="line-121"></a> <span class="p">{</span>
-<a name="line-122"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;state&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-123"></a> <span class="p">{</span>
-<a name="line-124"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;state&quot;</span><span class="p">)];</span>
-<a name="line-125"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{State}&quot;</span><span class="p">));</span>
-<a name="line-126"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-127"></a> <span class="p">}</span>
-<a name="line-128"></a> <span class="p">}</span>
-<a name="line-129"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Town&quot;</span><span class="p">))</span>
-<a name="line-130"></a> <span class="p">{</span>
-<a name="line-131"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;town&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-132"></a> <span class="p">{</span>
-<a name="line-133"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;town&quot;</span><span class="p">)];</span>
-<a name="line-134"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{Town}&quot;</span><span class="p">));</span>
-<a name="line-135"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-136"></a> <span class="p">}</span>
-<a name="line-137"></a> <span class="p">}</span>
-<a name="line-138"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Village&quot;</span><span class="p">))</span>
-<a name="line-139"></a> <span class="p">{</span>
-<a name="line-140"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;village&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-141"></a> <span class="p">{</span>
-<a name="line-142"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;village&quot;</span><span class="p">)];</span>
-<a name="line-143"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{Village}&quot;</span><span class="p">));</span>
-<a name="line-144"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-145"></a> <span class="p">}</span>
-<a name="line-146"></a> <span class="p">}</span>
-<a name="line-147"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Hamlet&quot;</span><span class="p">))</span>
-<a name="line-148"></a> <span class="p">{</span>
-<a name="line-149"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;hamlet&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-150"></a> <span class="p">{</span>
-<a name="line-151"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;hamlet&quot;</span><span class="p">)];</span>
-<a name="line-152"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{Hamlet}&quot;</span><span class="p">));</span>
-<a name="line-153"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-154"></a> <span class="p">}</span>
-<a name="line-155"></a> <span class="p">}</span>
-<a name="line-156"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;House number&quot;</span><span class="p">))</span>
-<a name="line-157"></a> <span class="p">{</span>
-<a name="line-158"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;house_number&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-159"></a> <span class="p">{</span>
-<a name="line-160"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;house_number&quot;</span><span class="p">)];</span>
-<a name="line-161"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{House number}&quot;</span><span class="p">));</span>
-<a name="line-162"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-163"></a> <span class="p">}</span>
-<a name="line-164"></a> <span class="p">}</span>
-<a name="line-165"></a> <span class="k">else</span>
-<a name="line-166"></a> <span class="p">{</span>
-<a name="line-167"></a> <span class="n">returnedAddress</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">indexFBracket</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">indexLBracket</span> <span class="o">-</span> <span class="n">indexFBracket</span> <span class="o">+</span> <span class="mi">2</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
-<a name="line-168"></a>
-<a name="line-169"></a><span class="hll"> <span class="kt">int</span> <span class="n">indexFormatFBracket</span> <span class="o">=</span> <span class="n">auxReturnedFormat</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{&quot;</span><span class="p">));</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-170"></a> <span class="kt">int</span> <span class="n">indexFormatLBracket</span> <span class="o">=</span> <span class="n">auxReturnedFormat</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;}&quot;</span><span class="p">));</span>
-<a name="line-171"></a> <span class="n">auxReturnedFormat</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">indexFormatFBracket</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span>
-<a name="line-172"></a> <span class="n">indexFormatLBracket</span> <span class="o">-</span> <span class="n">indexFormatFBracket</span> <span class="o">+</span> <span class="mi">2</span><span class="p">,</span>
-<a name="line-173"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
-<a name="line-174"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-175"></a> <span class="p">}</span>
-<a name="line-176"></a> <span class="p">}</span>
-<a name="line-177"></a>
-<a name="line-178"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">backendName</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;GeonamesUS&quot;</span><span class="p">))</span>
-<a name="line-179"></a> <span class="p">{</span>
-<a name="line-180"></a>
-<a name="line-181"></a> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span><span class="p">.</span><span class="n">compare</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;LAU2&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-182"></a> <span class="p">{</span>
-<a name="line-183"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;adminName2&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-184"></a> <span class="p">{</span>
-<a name="line-185"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;adminName2&quot;</span><span class="p">)];</span>
-<a name="line-186"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{LAU2}&quot;</span><span class="p">));</span>
-<a name="line-187"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-188"></a> <span class="p">}</span>
-<a name="line-189"></a> <span class="p">}</span>
-<a name="line-190"></a>
-<a name="line-191"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;LAU1&quot;</span><span class="p">))</span>
-<a name="line-192"></a> <span class="p">{</span>
-<a name="line-193"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;adminName1&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-194"></a> <span class="p">{</span>
-<a name="line-195"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;adminName1&quot;</span><span class="p">)];</span>
-<a name="line-196"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{LAU1}&quot;</span><span class="p">));</span>
-<a name="line-197"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-198"></a> <span class="p">}</span>
-<a name="line-199"></a> <span class="p">}</span>
-<a name="line-200"></a>
-<a name="line-201"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;City&quot;</span><span class="p">))</span>
-<a name="line-202"></a> <span class="p">{</span>
-<a name="line-203"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;placename&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-204"></a> <span class="p">{</span>
-<a name="line-205"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;placename&quot;</span><span class="p">)];</span>
-<a name="line-206"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{City}&quot;</span><span class="p">));</span>
-<a name="line-207"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-208"></a> <span class="p">}</span>
-<a name="line-209"></a> <span class="p">}</span>
-<a name="line-210"></a> <span class="k">else</span>
-<a name="line-211"></a> <span class="p">{</span>
-<a name="line-212"></a> <span class="n">returnedAddress</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">indexFBracket</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span>
-<a name="line-213"></a> <span class="n">indexLBracket</span> <span class="o">-</span> <span class="n">indexFBracket</span> <span class="o">+</span> <span class="mi">2</span><span class="p">,</span>
-<a name="line-214"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
-<a name="line-215"></a>
-<a name="line-216"></a><span class="hll"> <span class="kt">int</span> <span class="n">indexFormatFBracket</span> <span class="o">=</span> <span class="n">auxReturnedFormat</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{&quot;</span><span class="p">));</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-217"></a> <span class="kt">int</span> <span class="n">indexFormatLBracket</span> <span class="o">=</span> <span class="n">auxReturnedFormat</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;}&quot;</span><span class="p">));</span>
-<a name="line-218"></a> <span class="n">auxReturnedFormat</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">indexFormatFBracket</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span>
-<a name="line-219"></a> <span class="n">indexFormatLBracket</span> <span class="o">-</span> <span class="n">indexFormatFBracket</span> <span class="o">+</span> <span class="mi">2</span><span class="p">,</span>
-<a name="line-220"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
-<a name="line-221"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-222"></a> <span class="p">}</span>
-<a name="line-223"></a> <span class="p">}</span>
-<a name="line-224"></a>
-<a name="line-225"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">backendName</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Geonames&quot;</span><span class="p">))</span>
-<a name="line-226"></a> <span class="p">{</span>
-<a name="line-227"></a> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span><span class="p">.</span><span class="n">compare</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Country&quot;</span><span class="p">))</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-228"></a> <span class="p">{</span>
-<a name="line-229"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;countryName&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-230"></a> <span class="p">{</span>
-<a name="line-231"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;countryName&quot;</span><span class="p">)];</span>
-<a name="line-232"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{Country}&quot;</span><span class="p">));</span>
-<a name="line-233"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-234"></a> <span class="p">}</span>
-<a name="line-235"></a> <span class="p">}</span>
-<a name="line-236"></a>
-<a name="line-237"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">humanTag</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Place&quot;</span><span class="p">))</span>
-<a name="line-238"></a> <span class="p">{</span>
-<a name="line-239"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;name&quot;</span><span class="p">)].</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-240"></a> <span class="p">{</span>
-<a name="line-241"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">rgData</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;name&quot;</span><span class="p">)];</span>
-<a name="line-242"></a> <span class="n">returnedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{Place}&quot;</span><span class="p">));</span>
-<a name="line-243"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-244"></a> <span class="p">}</span>
-<a name="line-245"></a> <span class="p">}</span>
-<a name="line-246"></a> <span class="k">else</span>
-<a name="line-247"></a> <span class="p">{</span>
-<a name="line-248"></a> <span class="n">returnedAddress</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">indexFBracket</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span>
-<a name="line-249"></a> <span class="n">indexLBracket</span> <span class="o">-</span> <span class="n">indexFBracket</span> <span class="o">+</span> <span class="mi">2</span><span class="p">,</span>
-<a name="line-250"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
-<a name="line-251"></a>
-<a name="line-252"></a><span class="hll"> <span class="kt">int</span> <span class="n">indexFormatFBracket</span> <span class="o">=</span> <span class="n">auxReturnedFormat</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{&quot;</span><span class="p">));</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-253"></a> <span class="kt">int</span> <span class="n">indexFormatLBracket</span> <span class="o">=</span> <span class="n">auxReturnedFormat</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;}&quot;</span><span class="p">));</span>
-<a name="line-254"></a> <span class="n">auxReturnedFormat</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">indexFormatFBracket</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span>
-<a name="line-255"></a> <span class="n">indexFormatLBracket</span> <span class="o">-</span> <span class="n">indexFormatFBracket</span> <span class="o">+</span> <span class="mi">2</span><span class="p">,</span>
-<a name="line-256"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
-<a name="line-257"></a> <span class="n">dataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-258"></a> <span class="p">}</span>
-<a name="line-259"></a> <span class="p">}</span>
-<a name="line-260"></a>
-<a name="line-261"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">dataAdded</span><span class="p">)</span>
-<a name="line-262"></a> <span class="p">{</span>
-<a name="line-263"></a> <span class="n">returnedAddress</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">indexFBracket</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">humanTag</span><span class="p">.</span><span class="n">length</span><span class="p">()</span> <span class="o">+</span> <span class="mi">3</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
-<a name="line-264"></a> <span class="p">}</span>
-<a name="line-265"></a> <span class="k">else</span>
-<a name="line-266"></a> <span class="p">{</span>
-<a name="line-267"></a> <span class="n">returnedAddress</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">indexFBracket</span><span class="p">,</span> <span class="n">humanTag</span><span class="p">.</span><span class="n">length</span><span class="p">()</span> <span class="o">+</span> <span class="mi">2</span><span class="p">,</span> <span class="n">result</span><span class="p">);</span>
-<a name="line-268"></a> <span class="p">}</span>
-<a name="line-269"></a> <span class="p">}</span>
-<a name="line-270"></a>
-<a name="line-271"></a> <span class="n">returnedAddressElements</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">returnedFormat</span><span class="p">);</span>
-<a name="line-272"></a> <span class="n">returnedAddressElements</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">returnedAddress</span><span class="p">);</span>
-<a name="line-273"></a>
-<a name="line-274"></a> <span class="k">return</span> <span class="n">returnedAddressElements</span><span class="p">;</span>
-<a name="line-275"></a><span class="p">}</span>
-<a name="line-276"></a>
-<a name="line-277"></a><span class="p">}</span> <span class="c1">// namespace Digikam</span>
-<a name="line-278"></a>
-<a name="line-279"></a><span class="cp">#endif </span><span class="c1">// DIGIKAM_PARSE_TAG_STRING_H</span>
+<a name="line-55"></a><span class="cp">#include</span> <span class="cpf">&quot;advancedmetadatatab.h&quot;</span><span class="cp"></span>
+<a name="line-56"></a><span class="cp">#include</span> <span class="cpf">&quot;applicationsettings.h&quot;</span><span class="cp"></span>
+<a name="line-57"></a><span class="cp">#include</span> <span class="cpf">&quot;dactivelabel.h&quot;</span><span class="cp"></span>
+<a name="line-58"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_config.h&quot;</span><span class="cp"></span>
+<a name="line-59"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
+<a name="line-60"></a><span class="cp">#include</span> <span class="cpf">&quot;metaengine.h&quot;</span><span class="cp"></span>
+<a name="line-61"></a><span class="cp">#include</span> <span class="cpf">&quot;metadatapanel.h&quot;</span><span class="cp"></span>
+<a name="line-62"></a><span class="cp">#include</span> <span class="cpf">&quot;metaenginesettings.h&quot;</span><span class="cp"></span>
+<a name="line-63"></a><span class="cp">#include</span> <span class="cpf">&quot;setuputils.h&quot;</span><span class="cp"></span>
+<a name="line-64"></a>
+<a name="line-65"></a><span class="k">namespace</span> <span class="n">Digikam</span>
+<a name="line-66"></a><span class="p">{</span>
+<a name="line-67"></a>
+<a name="line-68"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">SetupMetadata</span><span class="o">::</span><span class="n">Private</span>
+<a name="line-69"></a><span class="p">{</span>
+<a name="line-70"></a><span class="k">public</span><span class="o">:</span>
+<a name="line-71"></a>
+<a name="line-72"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
+<a name="line-73"></a> <span class="o">:</span> <span class="n">exifAutoRotateOriginal</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
+<a name="line-74"></a> <span class="n">exifAutoRotateShowedInfo</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
+<a name="line-75"></a> <span class="n">clearMetadataShowedInfo</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
+<a name="line-76"></a> <span class="n">fieldsGroup</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-77"></a> <span class="n">readWriteGroup</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-78"></a> <span class="n">rotationGroup</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-79"></a> <span class="n">rotationAdvGroup</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-80"></a> <span class="n">saveTagsBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-81"></a> <span class="n">saveCommentsBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-82"></a> <span class="n">saveRatingBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-83"></a> <span class="n">savePickLabelBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-84"></a> <span class="n">saveColorLabelBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-85"></a> <span class="n">saveDateTimeBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-86"></a> <span class="n">saveTemplateBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-87"></a> <span class="n">saveFaceTags</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-88"></a> <span class="n">useLazySync</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-89"></a> <span class="n">writeRawFilesBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-90"></a> <span class="n">writeXMPSidecarBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-91"></a> <span class="n">readXMPSidecarBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-92"></a> <span class="n">sidecarFileNameBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-93"></a> <span class="n">updateFileTimeStampBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-94"></a> <span class="n">rescanImageIfModifiedBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-95"></a> <span class="n">clearMetadataIfRescanBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-96"></a> <span class="n">writingModeCombo</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-97"></a> <span class="n">rotateByFlag</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-98"></a> <span class="n">rotateByContents</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-99"></a> <span class="n">allowRotateByMetadata</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-100"></a> <span class="n">allowLossyRotate</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-101"></a> <span class="n">exifRotateBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-102"></a> <span class="n">exifSetOrientationBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-103"></a> <span class="n">saveToBalooBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-104"></a> <span class="n">readFromBalooBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-105"></a> <span class="n">tab</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-106"></a> <span class="n">displaySubTab</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-107"></a> <span class="n">tagsCfgPanel</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-108"></a> <span class="n">advTab</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-109"></a> <span class="n">extensionsEdit</span><span class="p">(</span><span class="k">nullptr</span><span class="p">)</span>
+<a name="line-110"></a> <span class="p">{</span>
+<a name="line-111"></a> <span class="p">}</span>
+<a name="line-112"></a>
+<a name="line-113"></a> <span class="kt">bool</span> <span class="n">exifAutoRotateOriginal</span><span class="p">;</span>
+<a name="line-114"></a> <span class="kt">bool</span> <span class="n">exifAutoRotateShowedInfo</span><span class="p">;</span>
+<a name="line-115"></a> <span class="kt">bool</span> <span class="n">clearMetadataShowedInfo</span><span class="p">;</span>
+<a name="line-116"></a>
+<a name="line-117"></a> <span class="n">QGroupBox</span><span class="o">*</span> <span class="n">fieldsGroup</span><span class="p">;</span>
+<a name="line-118"></a> <span class="n">QGroupBox</span><span class="o">*</span> <span class="n">readWriteGroup</span><span class="p">;</span>
+<a name="line-119"></a> <span class="n">QGroupBox</span><span class="o">*</span> <span class="n">rotationGroup</span><span class="p">;</span>
+<a name="line-120"></a> <span class="n">QGroupBox</span><span class="o">*</span> <span class="n">rotationAdvGroup</span><span class="p">;</span>
+<a name="line-121"></a>
+<a name="line-122"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">saveTagsBox</span><span class="p">;</span>
+<a name="line-123"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">saveCommentsBox</span><span class="p">;</span>
+<a name="line-124"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">saveRatingBox</span><span class="p">;</span>
+<a name="line-125"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">savePickLabelBox</span><span class="p">;</span>
+<a name="line-126"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">saveColorLabelBox</span><span class="p">;</span>
+<a name="line-127"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">saveDateTimeBox</span><span class="p">;</span>
+<a name="line-128"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">saveTemplateBox</span><span class="p">;</span>
+<a name="line-129"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">saveFaceTags</span><span class="p">;</span>
+<a name="line-130"></a>
+<a name="line-131"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">useLazySync</span><span class="p">;</span>
+<a name="line-132"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">writeRawFilesBox</span><span class="p">;</span>
+<a name="line-133"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">writeXMPSidecarBox</span><span class="p">;</span>
+<a name="line-134"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">readXMPSidecarBox</span><span class="p">;</span>
+<a name="line-135"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">sidecarFileNameBox</span><span class="p">;</span>
+<a name="line-136"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">updateFileTimeStampBox</span><span class="p">;</span>
+<a name="line-137"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">rescanImageIfModifiedBox</span><span class="p">;</span>
+<a name="line-138"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">clearMetadataIfRescanBox</span><span class="p">;</span>
+<a name="line-139"></a> <span class="n">QComboBox</span><span class="o">*</span> <span class="n">writingModeCombo</span><span class="p">;</span>
+<a name="line-140"></a>
+<a name="line-141"></a> <span class="n">QRadioButton</span><span class="o">*</span> <span class="n">rotateByFlag</span><span class="p">;</span>
+<a name="line-142"></a> <span class="n">QRadioButton</span><span class="o">*</span> <span class="n">rotateByContents</span><span class="p">;</span>
+<a name="line-143"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">allowRotateByMetadata</span><span class="p">;</span>
+<a name="line-144"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">allowLossyRotate</span><span class="p">;</span>
+<a name="line-145"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">exifRotateBox</span><span class="p">;</span>
+<a name="line-146"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">exifSetOrientationBox</span><span class="p">;</span>
+<a name="line-147"></a>
+<a name="line-148"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">saveToBalooBox</span><span class="p">;</span>
+<a name="line-149"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">readFromBalooBox</span><span class="p">;</span>
+<a name="line-150"></a>
+<a name="line-151"></a> <span class="n">QTabWidget</span><span class="o">*</span> <span class="n">tab</span><span class="p">;</span>
+<a name="line-152"></a> <span class="n">QTabWidget</span><span class="o">*</span> <span class="n">displaySubTab</span><span class="p">;</span>
+<a name="line-153"></a>
+<a name="line-154"></a> <span class="n">MetadataPanel</span><span class="o">*</span> <span class="n">tagsCfgPanel</span><span class="p">;</span>
+<a name="line-155"></a> <span class="n">AdvancedMetadataTab</span><span class="o">*</span> <span class="n">advTab</span><span class="p">;</span>
+<a name="line-156"></a>
+<a name="line-157"></a> <span class="n">QLineEdit</span><span class="o">*</span> <span class="n">extensionsEdit</span><span class="p">;</span>
+<a name="line-158"></a><span class="p">};</span>
+<a name="line-159"></a>
+<a name="line-160"></a><span class="n">SetupMetadata</span><span class="o">::</span><span class="n">SetupMetadata</span><span class="p">(</span><span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span><span class="p">)</span>
+<a name="line-161"></a> <span class="o">:</span> <span class="n">QScrollArea</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span>
+<a name="line-162"></a> <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">Private</span><span class="p">)</span>
+<a name="line-163"></a><span class="p">{</span>
+<a name="line-164"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QTabWidget</span><span class="p">(</span><span class="n">viewport</span><span class="p">());</span>
+<a name="line-165"></a> <span class="n">setWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span><span class="p">);</span>
+<a name="line-166"></a> <span class="n">setWidgetResizable</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-167"></a>
+<a name="line-168"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">panel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QWidget</span><span class="p">;</span>
+<a name="line-169"></a> <span class="n">QVBoxLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">mainLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QVBoxLayout</span><span class="p">;</span>
+<a name="line-170"></a>
+<a name="line-171"></a> <span class="c1">// --------------------------------------------------------</span>
+<a name="line-172"></a>
+<a name="line-173"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fieldsGroup</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGroupBox</span><span class="p">;</span>
+<a name="line-174"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">fieldsLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">;</span>
+<a name="line-175"></a>
+<a name="line-176"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fieldsGroup</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">xi18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
+<a name="line-177"></a> <span class="s">&quot;&lt;para&gt;In addition to the pixel content, image files usually &quot;</span>
+<a name="line-178"></a> <span class="s">&quot;contain a variety of metadata. A lot of the parameters you can use &quot;</span>
+<a name="line-179"></a> <span class="s">&quot;in digiKam to manage files, such as rating or comment, can be written &quot;</span>
+<a name="line-180"></a> <span class="s">&quot;to the files&#39; metadata.&lt;/para&gt; &quot;</span>
+<a name="line-181"></a> <span class="s">&quot;&lt;para&gt;Storing in metadata allows one to preserve this information &quot;</span>
+<a name="line-182"></a> <span class="s">&quot;when moving or sending the files to different systems.&lt;/para&gt;&quot;</span><span class="p">));</span>
+<a name="line-183"></a>
+<a name="line-184"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">fieldsIconLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">;</span>
+<a name="line-185"></a> <span class="n">fieldsIconLabel</span><span class="o">-&gt;</span><span class="n">setPixmap</span><span class="p">(</span><span class="n">QIcon</span><span class="o">::</span><span class="n">fromTheme</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;format-list-unordered&quot;</span><span class="p">)).</span><span class="n">pixmap</span><span class="p">(</span><span class="mi">32</span><span class="p">));</span>
+<a name="line-186"></a>
+<a name="line-187"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">fieldsLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@label&quot;</span><span class="p">,</span> <span class="s">&quot;Write This Information to the Metadata&quot;</span><span class="p">));</span>
+<a name="line-188"></a>
+<a name="line-189"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTagsBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
+<a name="line-190"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTagsBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Image tags&quot;</span><span class="p">));</span>
+<a name="line-191"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTagsBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span> <span class="s">&quot;Turn on this option to store the item tags &quot;</span>
+<a name="line-192"></a> <span class="s">&quot;in the XMP and IPTC tags.&quot;</span><span class="p">));</span>
+<a name="line-193"></a>
+<a name="line-194"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveCommentsBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
+<a name="line-195"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveCommentsBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Captions and title&quot;</span><span class="p">));</span>
+<a name="line-196"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveCommentsBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span> <span class="s">&quot;Turn on this option to store item caption and title &quot;</span>
+<a name="line-197"></a> <span class="s">&quot;in the JFIF Comment section, the EXIF tag, the XMP tag, &quot;</span>
+<a name="line-198"></a> <span class="s">&quot;and the IPTC tag.&quot;</span><span class="p">));</span>
+<a name="line-199"></a>
+<a name="line-200"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveRatingBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
+<a name="line-201"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveRatingBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Rating&quot;</span><span class="p">));</span>
+<a name="line-202"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveRatingBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span> <span class="s">&quot;Turn on this option to store the item rating &quot;</span>
+<a name="line-203"></a> <span class="s">&quot;in the EXIF tag and the XMP tags.&quot;</span><span class="p">));</span>
+<a name="line-204"></a>
+<a name="line-205"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">savePickLabelBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
+<a name="line-206"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">savePickLabelBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Pick label&quot;</span><span class="p">));</span>
+<a name="line-207"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">savePickLabelBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span> <span class="s">&quot;Turn on this option to store the item pick label &quot;</span>
+<a name="line-208"></a> <span class="s">&quot;in the XMP tags.&quot;</span><span class="p">));</span>
+<a name="line-209"></a>
+<a name="line-210"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveColorLabelBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
+<a name="line-211"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveColorLabelBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Color label&quot;</span><span class="p">));</span>
+<a name="line-212"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveColorLabelBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span> <span class="s">&quot;Turn on this option to store the item color label &quot;</span>
+<a name="line-213"></a> <span class="s">&quot;in the XMP tags.&quot;</span><span class="p">));</span>
+<a name="line-214"></a>
+<a name="line-215"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveDateTimeBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
+<a name="line-216"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveDateTimeBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Timestamps&quot;</span><span class="p">));</span>
+<a name="line-217"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveDateTimeBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span> <span class="s">&quot;Turn on this option to store the item date and time &quot;</span>
+<a name="line-218"></a> <span class="s">&quot;in the EXIF, XMP, and IPTC tags.&quot;</span><span class="p">));</span>
+<a name="line-219"></a>
+<a name="line-220"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTemplateBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
+<a name="line-221"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTemplateBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Metadata templates (Copyright etc.)&quot;</span><span class="p">));</span>
+<a name="line-222"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTemplateBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span> <span class="s">&quot;Turn on this option to store the metadata &quot;</span>
+<a name="line-223"></a> <span class="s">&quot;template in the XMP and the IPTC tags. &quot;</span>
+<a name="line-224"></a> <span class="s">&quot;You can set template values to Template setup page.&quot;</span><span class="p">));</span>
+<a name="line-225"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveFaceTags</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
+<a name="line-226"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveFaceTags</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Face Tags (including face areas)&quot;</span><span class="p">));</span>
+<a name="line-227"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveFaceTags</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span> <span class="s">&quot;Turn on this option to store face tags &quot;</span>
+<a name="line-228"></a> <span class="s">&quot;with face rectangles in the XMP tags.&quot;</span><span class="p">));</span>
+<a name="line-229"></a>
+<a name="line-230"></a> <span class="n">fieldsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">fieldsIconLabel</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-231"></a> <span class="n">fieldsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">fieldsLabel</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-232"></a> <span class="n">fieldsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTagsBox</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-233"></a> <span class="n">fieldsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">saveCommentsBox</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-234"></a> <span class="n">fieldsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">saveRatingBox</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-235"></a> <span class="n">fieldsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">savePickLabelBox</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-236"></a> <span class="n">fieldsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">saveColorLabelBox</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-237"></a> <span class="n">fieldsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">saveDateTimeBox</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-238"></a> <span class="n">fieldsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTemplateBox</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-239"></a> <span class="n">fieldsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">saveFaceTags</span><span class="p">,</span> <span class="mi">9</span> <span class="p">,</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-240"></a> <span class="n">fieldsLayout</span><span class="o">-&gt;</span><span class="n">setColumnStretch</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
+<a name="line-241"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fieldsGroup</span><span class="o">-&gt;</span><span class="n">setLayout</span><span class="p">(</span><span class="n">fieldsLayout</span><span class="p">);</span>
+<a name="line-242"></a>
+<a name="line-243"></a> <span class="c1">// --------------------------------------------------------</span>
+<a name="line-244"></a>
+<a name="line-245"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readWriteGroup</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGroupBox</span><span class="p">;</span>
+<a name="line-246"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">readWriteLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">;</span>
+<a name="line-247"></a>
+<a name="line-248"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">readWriteIconLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">;</span>
+<a name="line-249"></a> <span class="n">readWriteIconLabel</span><span class="o">-&gt;</span><span class="n">setPixmap</span><span class="p">(</span><span class="n">QIcon</span><span class="o">::</span><span class="n">fromTheme</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;document-open&quot;</span><span class="p">)).</span><span class="n">pixmap</span><span class="p">(</span><span class="mi">32</span><span class="p">));</span>
+<a name="line-250"></a>
+<a name="line-251"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">readWriteLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@label&quot;</span><span class="p">,</span> <span class="s">&quot;Reading and Writing Metadata&quot;</span><span class="p">));</span>
+<a name="line-252"></a>
+<a name="line-253"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">useLazySync</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
+<a name="line-254"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">useLazySync</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Use lazy synchronization&quot;</span><span class="p">));</span>
+<a name="line-255"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">useLazySync</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
+<a name="line-256"></a> <span class="s">&quot;Instead of synchronizing metadata, just schedule it for synchronization.&quot;</span>
+<a name="line-257"></a> <span class="s">&quot;Synchronization can be done later by triggering the apply pending, or at digikam exit&quot;</span><span class="p">));</span>
+<a name="line-258"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeRawFilesBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
+<a name="line-259"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeRawFilesBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;If possible write Metadata to RAW files (experimental)&quot;</span><span class="p">));</span>
+<a name="line-260"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeRawFilesBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span> <span class="s">&quot;Turn on this option to write metadata into RAW TIFF/EP files. &quot;</span>
+<a name="line-261"></a> <span class="s">&quot;This feature requires the Exiv2 shared library, version &gt;= 0.18.0. It is still &quot;</span>
+<a name="line-262"></a> <span class="s">&quot;experimental, and is disabled by default.&quot;</span><span class="p">));</span>
+<a name="line-263"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeRawFilesBox</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">MetaEngine</span><span class="o">::</span><span class="n">supportMetadataWritting</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;image/x-raw&quot;</span><span class="p">)));</span>
+<a name="line-264"></a>
+<a name="line-265"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">updateFileTimeStampBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
+<a name="line-266"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">updateFileTimeStampBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;&amp;Update file modification timestamp when files are modified&quot;</span><span class="p">));</span>
+<a name="line-267"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">updateFileTimeStampBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
+<a name="line-268"></a> <span class="s">&quot;Turn off this option to not update file timestamps when files are changed as &quot;</span>
+<a name="line-269"></a> <span class="s">&quot;when you update metadata or image data. Note: disabling this option can &quot;</span>
+<a name="line-270"></a> <span class="s">&quot;introduce some dysfunctions with applications which use file timestamps &quot;</span>
+<a name="line-271"></a> <span class="s">&quot;properties to detect file modifications automatically.&quot;</span><span class="p">));</span>
+<a name="line-272"></a>
+<a name="line-273"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rescanImageIfModifiedBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
+<a name="line-274"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rescanImageIfModifiedBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;&amp;Rescan file when files are modified&quot;</span><span class="p">));</span>
+<a name="line-275"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rescanImageIfModifiedBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
+<a name="line-276"></a> <span class="s">&quot;Turning this option on, will force digiKam to rescan files that has been &quot;</span>
+<a name="line-277"></a> <span class="s">&quot;modified outside digiKam. If a file has changed it is file size or if &quot;</span>
+<a name="line-278"></a> <span class="s">&quot;the last modified timestamp has changed, a rescan of that &quot;</span>
+<a name="line-279"></a> <span class="s">&quot;file will be performed when digiKam starts.&quot;</span><span class="p">));</span>
+<a name="line-280"></a>
+<a name="line-281"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">clearMetadataIfRescanBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
+<a name="line-282"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">clearMetadataIfRescanBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;&amp;Clean up the metadata from the database when rescan files&quot;</span><span class="p">));</span>
+<a name="line-283"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">clearMetadataIfRescanBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
+<a name="line-284"></a> <span class="s">&quot;Turning this option on, will force digiKam to delete the file metadata &quot;</span>
+<a name="line-285"></a> <span class="s">&quot;contained in the database before the file is rescanned. WARNING: &quot;</span>
+<a name="line-286"></a> <span class="s">&quot;if your metadata has been written to the database only and not &quot;</span>
+<a name="line-287"></a> <span class="s">&quot;to the file or sidecar, you will be able to lose inserted &quot;</span>
+<a name="line-288"></a> <span class="s">&quot;metadata such as tags, keywords, or geographic coordinates.&quot;</span><span class="p">));</span>
+<a name="line-289"></a>
+<a name="line-290"></a> <span class="n">readWriteLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">readWriteIconLabel</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-291"></a> <span class="n">readWriteLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">readWriteLabel</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-292"></a> <span class="n">readWriteLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">useLazySync</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-293"></a> <span class="n">readWriteLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">writeRawFilesBox</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-294"></a> <span class="n">readWriteLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">updateFileTimeStampBox</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-295"></a> <span class="n">readWriteLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rescanImageIfModifiedBox</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-296"></a> <span class="n">readWriteLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">clearMetadataIfRescanBox</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-297"></a> <span class="n">readWriteLayout</span><span class="o">-&gt;</span><span class="n">setColumnStretch</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
+<a name="line-298"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readWriteGroup</span><span class="o">-&gt;</span><span class="n">setLayout</span><span class="p">(</span><span class="n">readWriteLayout</span><span class="p">);</span>
+<a name="line-299"></a>
+<a name="line-300"></a> <span class="c1">// --------------------------------------------------------</span>
+<a name="line-301"></a>
+<a name="line-302"></a> <span class="n">QFrame</span><span class="o">*</span> <span class="k">const</span> <span class="n">infoBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QFrame</span><span class="p">;</span>
+<a name="line-303"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">infoBoxGrid</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">;</span>
+<a name="line-304"></a> <span class="n">infoBox</span><span class="o">-&gt;</span><span class="n">setFrameStyle</span><span class="p">(</span><span class="n">QFrame</span><span class="o">::</span><span class="n">StyledPanel</span> <span class="o">|</span> <span class="n">QFrame</span><span class="o">::</span><span class="n">Raised</span><span class="p">);</span>
+<a name="line-305"></a>
+<a name="line-306"></a> <span class="n">DActiveLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">exiv2LogoLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DActiveLabel</span><span class="p">(</span><span class="n">QUrl</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://www.exiv2.org&quot;</span><span class="p">)),</span>
+<a name="line-307"></a> <span class="n">QStandardPaths</span><span class="o">::</span><span class="n">locate</span><span class="p">(</span><span class="n">QStandardPaths</span><span class="o">::</span><span class="n">GenericDataLocation</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;digikam/data/logo-exiv2.png&quot;</span><span class="p">)),</span>
+<a name="line-308"></a> <span class="n">infoBox</span><span class="p">);</span>
+<a name="line-309"></a> <span class="n">exiv2LogoLabel</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Visit Exiv2 project website&quot;</span><span class="p">));</span>
+<a name="line-310"></a>
+<a name="line-311"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">explanation</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">infoBox</span><span class="p">);</span>
+<a name="line-312"></a> <span class="n">explanation</span><span class="o">-&gt;</span><span class="n">setOpenExternalLinks</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-313"></a> <span class="n">explanation</span><span class="o">-&gt;</span><span class="n">setWordWrap</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-314"></a> <span class="n">QString</span> <span class="n">txt</span><span class="p">;</span>
+<a name="line-315"></a>
+<a name="line-316"></a> <span class="n">txt</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;p&gt;&lt;a href=&#39;https://en.wikipedia.org/wiki/Exif&#39;&gt;EXIF&lt;/a&gt; - &quot;</span>
+<a name="line-317"></a> <span class="s">&quot;a standard used by most digital cameras today to store technical &quot;</span>
+<a name="line-318"></a> <span class="s">&quot;information (like aperture and shutter speed) about an image.&lt;/p&gt;&quot;</span><span class="p">));</span>
+<a name="line-319"></a>
+<a name="line-320"></a> <span class="n">txt</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;p&gt;&lt;a href=&#39;https://en.wikipedia.org/wiki/IPTC_Information_Interchange_Model&#39;&gt;IPTC&lt;/a&gt; - &quot;</span>
+<a name="line-321"></a> <span class="s">&quot;an older standard used in digital photography to store &quot;</span>
+<a name="line-322"></a> <span class="s">&quot;photographer information in images.&lt;/p&gt;&quot;</span><span class="p">));</span>
+<a name="line-323"></a>
+<a name="line-324"></a> <span class="k">if</span> <span class="p">(</span><span class="n">MetaEngine</span><span class="o">::</span><span class="n">supportXmp</span><span class="p">())</span>
+<a name="line-325"></a> <span class="n">txt</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;p&gt;&lt;a href=&#39;https://en.wikipedia.org/wiki/Extensible_Metadata_Platform&#39;&gt;XMP&lt;/a&gt; - &quot;</span>
+<a name="line-326"></a> <span class="s">&quot;a new standard used in digital photography, designed to replace IPTC.&lt;/p&gt;&quot;</span><span class="p">));</span>
+<a name="line-327"></a>
+<a name="line-328"></a> <span class="n">explanation</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">txt</span><span class="p">);</span>
+<a name="line-329"></a>
+<a name="line-330"></a> <span class="n">infoBoxGrid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">exiv2LogoLabel</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-331"></a> <span class="n">infoBoxGrid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">explanation</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
+<a name="line-332"></a> <span class="n">infoBoxGrid</span><span class="o">-&gt;</span><span class="n">setColumnStretch</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
+<a name="line-333"></a> <span class="n">infoBoxGrid</span><span class="o">-&gt;</span><span class="n">setRowStretch</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
+<a name="line-334"></a> <span class="n">infoBoxGrid</span><span class="o">-&gt;</span><span class="n">setSpacing</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-335"></a> <span class="n">infoBox</span><span class="o">-&gt;</span><span class="n">setLayout</span><span class="p">(</span><span class="n">infoBoxGrid</span><span class="p">);</span>
+<a name="line-336"></a>
+<a name="line-337"></a> <span class="c1">// --------------------------------------------------------</span>
+<a name="line-338"></a>
+<a name="line-339"></a> <span class="n">mainLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fieldsGroup</span><span class="p">);</span>
+<a name="line-340"></a> <span class="n">mainLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">readWriteGroup</span><span class="p">);</span>
+<a name="line-341"></a> <span class="n">mainLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">infoBox</span><span class="p">);</span>
+<a name="line-342"></a> <span class="n">panel</span><span class="o">-&gt;</span><span class="n">setLayout</span><span class="p">(</span><span class="n">mainLayout</span><span class="p">);</span>
+<a name="line-343"></a>
+<a name="line-344"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span><span class="o">-&gt;</span><span class="n">insertTab</span><span class="p">(</span><span class="n">Behavior</span><span class="p">,</span> <span class="n">panel</span><span class="p">,</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@title:tab&quot;</span><span class="p">,</span> <span class="s">&quot;Behavior&quot;</span><span class="p">));</span>
+<a name="line-345"></a>
+<a name="line-346"></a> <span class="c1">// --------------------------------------------------------</span>
+<a name="line-347"></a>
+<a name="line-348"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">rotationPanel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span><span class="p">);</span>
+<a name="line-349"></a> <span class="n">QVBoxLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">rotationLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QVBoxLayout</span><span class="p">;</span>
+<a name="line-350"></a>
+<a name="line-351"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotationGroup</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGroupBox</span><span class="p">;</span>
+<a name="line-352"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">rotationGroupLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">;</span>
+<a name="line-353"></a>
+<a name="line-354"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">rotationExplanation</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@label&quot;</span><span class="p">,</span> <span class="s">&quot;When rotating a file&quot;</span><span class="p">));</span>
+<a name="line-355"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">rotationIcon</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">;</span>
+<a name="line-356"></a> <span class="n">rotationIcon</span><span class="o">-&gt;</span><span class="n">setPixmap</span><span class="p">(</span><span class="n">QIcon</span><span class="o">::</span><span class="n">fromTheme</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;transform-rotate&quot;</span><span class="p">)).</span><span class="n">pixmap</span><span class="p">(</span><span class="mi">32</span><span class="p">));</span>
+<a name="line-357"></a>
+<a name="line-358"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByFlag</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QRadioButton</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:radio&quot;</span><span class="p">,</span> <span class="s">&quot;Rotate by only setting a flag&quot;</span><span class="p">));</span>
+<a name="line-359"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByContents</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QRadioButton</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:radio&quot;</span><span class="p">,</span> <span class="s">&quot;Rotate by changing the content if possible&quot;</span><span class="p">));</span>
+<a name="line-360"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowLossyRotate</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Even allow lossy rotation if necessary&quot;</span><span class="p">));</span>
+<a name="line-361"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowRotateByMetadata</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Write flag to metadata if possible&quot;</span><span class="p">));</span>
+<a name="line-362"></a>
+<a name="line-363"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByContents</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-364"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowLossyRotate</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
+<a name="line-365"></a>
+<a name="line-366"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByFlag</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
+<a name="line-367"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByContents</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
+<a name="line-368"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowLossyRotate</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
+<a name="line-369"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowLossyRotate</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
+<a name="line-370"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowRotateByMetadata</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-371"></a>
+<a name="line-372"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByFlag</span><span class="o">-&gt;</span><span class="n">setToolTip</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:tooltip&quot;</span><span class="p">,</span>
+<a name="line-373"></a> <span class="s">&quot;Rotate files only by changing a flag, not touching the pixel data&quot;</span><span class="p">));</span>
+<a name="line-374"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByFlag</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">xi18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
+<a name="line-375"></a> <span class="s">&quot;&lt;para&gt;A file can be rotated in two ways:&lt;nl/&gt; &quot;</span>
+<a name="line-376"></a> <span class="s">&quot;You can change the contents, rearranging the individual pixels of the image data.&lt;nl/&gt; &quot;</span>
+<a name="line-377"></a> <span class="s">&quot;Or you can set a flag that the file is to be rotated before it is shown.&lt;/para&gt; &quot;</span>
+<a name="line-378"></a> <span class="s">&quot;&lt;para&gt;Select this option if you always want to set only a flag. &quot;</span>
+<a name="line-379"></a> <span class="s">&quot;This is less obtrusive, but requires support if the file is accessed with another software. &quot;</span>
+<a name="line-380"></a> <span class="s">&quot;Ensure to allow setting the flag in the metadata if you want to share your files &quot;</span>
+<a name="line-381"></a> <span class="s">&quot;outside digiKam.&lt;/para&gt;&quot;</span><span class="p">));</span>
+<a name="line-382"></a>
+<a name="line-383"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByContents</span><span class="o">-&gt;</span><span class="n">setToolTip</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:tooltip&quot;</span><span class="p">,</span>
+<a name="line-384"></a> <span class="s">&quot;If possible rotate files by changing the pixel data&quot;</span><span class="p">));</span>
+<a name="line-385"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByContents</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">xi18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
+<a name="line-386"></a> <span class="s">&quot;&lt;para&gt;A file can be rotated in two ways:&lt;nl/&gt; &quot;</span>
+<a name="line-387"></a> <span class="s">&quot;You can change the contents, rearranging the individual pixels of the image data.&lt;nl/&gt; &quot;</span>
+<a name="line-388"></a> <span class="s">&quot;Or you can set a flag that the file is to be rotated before it is shown.&lt;/para&gt; &quot;</span>
+<a name="line-389"></a> <span class="s">&quot;&lt;para&gt;Select this option if you want the file to be rotated by changing the content. &quot;</span>
+<a name="line-390"></a> <span class="s">&quot;This is a lossless operation for JPEG files. For other formats it is a lossy operation, &quot;</span>
+<a name="line-391"></a> <span class="s">&quot;which you need to enable explicitly. &quot;</span>
+<a name="line-392"></a> <span class="s">&quot;It is not support for RAW and other read-only formats, &quot;</span>
+<a name="line-393"></a> <span class="s">&quot;which will be rotated by flag only.&lt;/para&gt;&quot;</span><span class="p">));</span>
+<a name="line-394"></a>
+<a name="line-395"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowLossyRotate</span><span class="o">-&gt;</span><span class="n">setToolTip</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:tooltip&quot;</span><span class="p">,</span>
+<a name="line-396"></a> <span class="s">&quot;Rotate files by changing the pixel data even if the operation will incur quality loss&quot;</span><span class="p">));</span>
+<a name="line-397"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowLossyRotate</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
+<a name="line-398"></a> <span class="s">&quot;For some file formats which apply lossy compression, &quot;</span>
+<a name="line-399"></a> <span class="s">&quot;data will be lost each time the content is rotated. &quot;</span>
+<a name="line-400"></a> <span class="s">&quot;Check this option to allow lossy rotation. &quot;</span>
+<a name="line-401"></a> <span class="s">&quot;If not enabled, these files will be rotated by flag.&quot;</span><span class="p">));</span>
+<a name="line-402"></a>
+<a name="line-403"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowRotateByMetadata</span><span class="o">-&gt;</span><span class="n">setToolTip</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:tooltip&quot;</span><span class="p">,</span>
+<a name="line-404"></a> <span class="s">&quot;When rotating a file by setting a flag, also change this flag in the file&#39;s metadata&quot;</span><span class="p">));</span>
+<a name="line-405"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowRotateByMetadata</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
+<a name="line-406"></a> <span class="s">&quot;File metadata typically contains a flag describing &quot;</span>
+<a name="line-407"></a> <span class="s">&quot;that a file shall be shown rotated. &quot;</span>
+<a name="line-408"></a> <span class="s">&quot;Enable this option to allow editing this field. &quot;</span><span class="p">));</span>
+<a name="line-409"></a>
+<a name="line-410"></a> <span class="n">rotationGroupLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">rotationIcon</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-411"></a> <span class="n">rotationGroupLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">rotationExplanation</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
+<a name="line-412"></a> <span class="n">rotationGroupLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByFlag</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-413"></a> <span class="n">rotationGroupLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByContents</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-414"></a> <span class="n">rotationGroupLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">allowLossyRotate</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-415"></a> <span class="n">rotationGroupLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">allowRotateByMetadata</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-416"></a> <span class="n">rotationGroupLayout</span><span class="o">-&gt;</span><span class="n">setColumnStretch</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
+<a name="line-417"></a>
+<a name="line-418"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotationGroup</span><span class="o">-&gt;</span><span class="n">setLayout</span><span class="p">(</span><span class="n">rotationGroupLayout</span><span class="p">);</span>
+<a name="line-419"></a>
+<a name="line-420"></a> <span class="c1">// --------------------------------------------------------</span>
+<a name="line-421"></a>
+<a name="line-422"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotationAdvGroup</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGroupBox</span><span class="p">;</span>
+<a name="line-423"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">rotationAdvLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">;</span>
+<a name="line-424"></a>
+<a name="line-425"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">rotationAdvExpl</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@label&quot;</span><span class="p">,</span> <span class="s">&quot;Rotate actions&quot;</span><span class="p">));</span>
+<a name="line-426"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">rotationAdvIcon</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">;</span>
+<a name="line-427"></a> <span class="n">rotationAdvIcon</span><span class="o">-&gt;</span><span class="n">setPixmap</span><span class="p">(</span><span class="n">QIcon</span><span class="o">::</span><span class="n">fromTheme</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;configure&quot;</span><span class="p">)).</span><span class="n">pixmap</span><span class="p">(</span><span class="mi">32</span><span class="p">));</span>
+<a name="line-428"></a>
+<a name="line-429"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exifRotateBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
+<a name="line-430"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exifRotateBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Show images/thumbnails &amp;rotated according to orientation tag.&quot;</span><span class="p">));</span>
+<a name="line-431"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exifSetOrientationBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
+<a name="line-432"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exifSetOrientationBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Set orientation tag to normal after rotate/flip.&quot;</span><span class="p">));</span>
+<a name="line-433"></a>
+<a name="line-434"></a> <span class="n">rotationAdvLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">rotationAdvIcon</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-435"></a> <span class="n">rotationAdvLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">rotationAdvExpl</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-436"></a> <span class="n">rotationAdvLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">exifRotateBox</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-437"></a> <span class="n">rotationAdvLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">exifSetOrientationBox</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-438"></a> <span class="n">rotationAdvLayout</span><span class="o">-&gt;</span><span class="n">setColumnStretch</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
+<a name="line-439"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotationAdvGroup</span><span class="o">-&gt;</span><span class="n">setLayout</span><span class="p">(</span><span class="n">rotationAdvLayout</span><span class="p">);</span>
+<a name="line-440"></a>
+<a name="line-441"></a> <span class="c1">// --------------------------------------------------------</span>
+<a name="line-442"></a>
+<a name="line-443"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">rotationNote</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;b&gt;Note: These settings affect the album view &quot;</span>
+<a name="line-444"></a> <span class="s">&quot;and not the image editor. The image editor always &quot;</span>
+<a name="line-445"></a> <span class="s">&quot;changes the image data during the rotation.&lt;/b&gt;&quot;</span><span class="p">));</span>
+<a name="line-446"></a> <span class="n">rotationNote</span><span class="o">-&gt;</span><span class="n">setWordWrap</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-447"></a> <span class="n">rotationNote</span><span class="o">-&gt;</span><span class="n">setFrameStyle</span><span class="p">(</span><span class="n">QFrame</span><span class="o">::</span><span class="n">StyledPanel</span> <span class="o">|</span> <span class="n">QFrame</span><span class="o">::</span><span class="n">Raised</span><span class="p">);</span>
+<a name="line-448"></a>
+<a name="line-449"></a> <span class="c1">// --------------------------------------------------------</span>
+<a name="line-450"></a>
+<a name="line-451"></a> <span class="n">rotationLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rotationGroup</span><span class="p">);</span>
+<a name="line-452"></a> <span class="n">rotationLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rotationAdvGroup</span><span class="p">);</span>
+<a name="line-453"></a> <span class="n">rotationLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">rotationNote</span><span class="p">);</span>
+<a name="line-454"></a> <span class="n">rotationLayout</span><span class="o">-&gt;</span><span class="n">addStretch</span><span class="p">();</span>
+<a name="line-455"></a> <span class="n">rotationPanel</span><span class="o">-&gt;</span><span class="n">setLayout</span><span class="p">(</span><span class="n">rotationLayout</span><span class="p">);</span>
+<a name="line-456"></a>
+<a name="line-457"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span><span class="o">-&gt;</span><span class="n">insertTab</span><span class="p">(</span><span class="n">Rotation</span><span class="p">,</span> <span class="n">rotationPanel</span><span class="p">,</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@title:tab&quot;</span><span class="p">,</span> <span class="s">&quot;Rotation&quot;</span><span class="p">));</span>
+<a name="line-458"></a>
+<a name="line-459"></a> <span class="c1">// --------------------------------------------------------</span>
+<a name="line-460"></a>
+<a name="line-461"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">displayPanel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QWidget</span><span class="p">;</span>
+<a name="line-462"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">displayLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">;</span>
+<a name="line-463"></a>
+<a name="line-464"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">displayLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:label&quot;</span><span class="p">,</span> <span class="s">&quot;Select Metadata Fields to Be Displayed&quot;</span><span class="p">));</span>
+<a name="line-465"></a>
+<a name="line-466"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">displayIcon</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">;</span>
+<a name="line-467"></a> <span class="n">displayIcon</span><span class="o">-&gt;</span><span class="n">setPixmap</span><span class="p">(</span><span class="n">QIcon</span><span class="o">::</span><span class="n">fromTheme</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;view-list-tree&quot;</span><span class="p">)).</span><span class="n">pixmap</span><span class="p">(</span><span class="mi">32</span><span class="p">));</span>
+<a name="line-468"></a>
+<a name="line-469"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">displaySubTab</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QTabWidget</span><span class="p">;</span>
+<a name="line-470"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagsCfgPanel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">MetadataPanel</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">displaySubTab</span><span class="p">);</span>
+<a name="line-471"></a>
+<a name="line-472"></a> <span class="n">displayLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">displayIcon</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-473"></a> <span class="n">displayLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">displayLabel</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-474"></a> <span class="n">displayLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">displaySubTab</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-475"></a> <span class="n">displayLayout</span><span class="o">-&gt;</span><span class="n">setColumnStretch</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-476"></a>
+<a name="line-477"></a> <span class="n">displayPanel</span><span class="o">-&gt;</span><span class="n">setLayout</span><span class="p">(</span><span class="n">displayLayout</span><span class="p">);</span>
+<a name="line-478"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span><span class="o">-&gt;</span><span class="n">insertTab</span><span class="p">(</span><span class="n">Display</span><span class="p">,</span> <span class="n">displayPanel</span><span class="p">,</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@title:tab&quot;</span><span class="p">,</span> <span class="s">&quot;Views&quot;</span><span class="p">));</span>
+<a name="line-479"></a>
+<a name="line-480"></a> <span class="c1">// --------------------------------------------------------</span>
+<a name="line-481"></a>
+<a name="line-482"></a><span class="cp">#ifdef HAVE_KFILEMETADATA</span>
+<a name="line-483"></a>
+<a name="line-484"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">balooPanel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span><span class="p">);</span>
+<a name="line-485"></a> <span class="n">QVBoxLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">balooLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QVBoxLayout</span><span class="p">(</span><span class="n">balooPanel</span><span class="p">);</span>
+<a name="line-486"></a>
+<a name="line-487"></a> <span class="n">QGroupBox</span><span class="o">*</span> <span class="k">const</span> <span class="n">balooGroup</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGroupBox</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Baloo Desktop Search&quot;</span><span class="p">),</span> <span class="n">balooPanel</span><span class="p">);</span>
+<a name="line-488"></a> <span class="n">QVBoxLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">gLayout3</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QVBoxLayout</span><span class="p">(</span><span class="n">balooGroup</span><span class="p">);</span>
+<a name="line-489"></a>
+<a name="line-490"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveToBalooBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
+<a name="line-491"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveToBalooBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Store metadata from digiKam in Baloo&quot;</span><span class="p">));</span>
+<a name="line-492"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveToBalooBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Turn on this option to push rating, comments and tags &quot;</span>
+<a name="line-493"></a> <span class="s">&quot;from digiKam into the Baloo storage&quot;</span><span class="p">));</span>
+<a name="line-494"></a>
+<a name="line-495"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readFromBalooBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
+<a name="line-496"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readFromBalooBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Read metadata from Baloo&quot;</span><span class="p">));</span>
+<a name="line-497"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readFromBalooBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Turn on this option if you want to apply changes to &quot;</span>
+<a name="line-498"></a> <span class="s">&quot;rating, comments and tags made in Baloo to digiKam&#39;s metadata storage. &quot;</span>
+<a name="line-499"></a> <span class="s">&quot;Please note that image metadata will not be edited automatically.&quot;</span><span class="p">));</span>
+<a name="line-500"></a>
+<a name="line-501"></a> <span class="n">gLayout3</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">saveToBalooBox</span><span class="p">);</span>
+<a name="line-502"></a> <span class="n">gLayout3</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">readFromBalooBox</span><span class="p">);</span>
+<a name="line-503"></a>
+<a name="line-504"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span><span class="o">-&gt;</span><span class="n">insertTab</span><span class="p">(</span><span class="n">Baloo</span><span class="p">,</span> <span class="n">balooPanel</span><span class="p">,</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@title:tab&quot;</span><span class="p">,</span> <span class="s">&quot;Baloo&quot;</span><span class="p">));</span>
+<a name="line-505"></a>
+<a name="line-506"></a> <span class="c1">// --------------------------------------------------------</span>
+<a name="line-507"></a>
+<a name="line-508"></a> <span class="n">QFrame</span><span class="o">*</span> <span class="k">const</span> <span class="n">balooBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QFrame</span><span class="p">(</span><span class="n">balooPanel</span><span class="p">);</span>
+<a name="line-509"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">balooGrid</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">(</span><span class="n">balooBox</span><span class="p">);</span>
+<a name="line-510"></a> <span class="n">balooBox</span><span class="o">-&gt;</span><span class="n">setFrameStyle</span><span class="p">(</span><span class="n">QFrame</span><span class="o">::</span><span class="n">StyledPanel</span> <span class="o">|</span> <span class="n">QFrame</span><span class="o">::</span><span class="n">Raised</span><span class="p">);</span>
+<a name="line-511"></a>
+<a name="line-512"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">balooLogoLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">;</span>
+<a name="line-513"></a> <span class="n">balooLogoLabel</span><span class="o">-&gt;</span><span class="n">setPixmap</span><span class="p">(</span><span class="n">QIcon</span><span class="o">::</span><span class="n">fromTheme</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;baloo&quot;</span><span class="p">)).</span><span class="n">pixmap</span><span class="p">(</span><span class="mi">48</span><span class="p">));</span>
+<a name="line-514"></a>
+<a name="line-515"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">balooExplanation</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">balooBox</span><span class="p">);</span>
+<a name="line-516"></a> <span class="n">balooExplanation</span><span class="o">-&gt;</span><span class="n">setOpenExternalLinks</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-517"></a> <span class="n">balooExplanation</span><span class="o">-&gt;</span><span class="n">setWordWrap</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-518"></a> <span class="n">QString</span> <span class="n">balootxt</span><span class="p">;</span>
+<a name="line-519"></a>
+<a name="line-520"></a> <span class="n">balootxt</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;p&gt;&lt;a href=&#39;http://community.kde.org/Baloo&#39;&gt;Baloo&lt;/a&gt; &quot;</span>
+<a name="line-521"></a> <span class="s">&quot;provides the basis to handle all kinds of metadata on the KDE desktop in a generic fashion. &quot;</span>
+<a name="line-522"></a> <span class="s">&quot;It allows you to tag, rate and comment your files in KDE applications like Dolphin.&lt;/p&gt; &quot;</span>
+<a name="line-523"></a> <span class="s">&quot;&lt;p&gt;Please set here if you want to synchronize the metadata stored by digiKam desktop-wide with the &quot;</span>
+<a name="line-524"></a> <span class="s">&quot;Baloo Desktop Search.&lt;/p&gt; &quot;</span><span class="p">));</span>
+<a name="line-525"></a>
+<a name="line-526"></a> <span class="n">balooExplanation</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">balootxt</span><span class="p">);</span>
+<a name="line-527"></a>
+<a name="line-528"></a> <span class="n">balooGrid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">balooLogoLabel</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-529"></a> <span class="n">balooGrid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">balooExplanation</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
+<a name="line-530"></a> <span class="n">balooGrid</span><span class="o">-&gt;</span><span class="n">setColumnStretch</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
+<a name="line-531"></a> <span class="n">balooGrid</span><span class="o">-&gt;</span><span class="n">setSpacing</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<a name="line-532"></a>
+<a name="line-533"></a> <span class="c1">// --------------------------------------------------------</span>
+<a name="line-534"></a>
+<a name="line-535"></a> <span class="n">balooLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">balooGroup</span><span class="p">);</span>
+<a name="line-536"></a> <span class="n">balooLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">balooBox</span><span class="p">);</span>
+<a name="line-537"></a><span class="cm">/*</span>
+<a name="line-538"></a><span class="cm"> balooLayout-&gt;addWidget(d-&gt;resyncButton, 0, Qt::AlignRight);</span>
+<a name="line-539"></a><span class="cm">*/</span>
+<a name="line-540"></a> <span class="n">balooLayout</span><span class="o">-&gt;</span><span class="n">addStretch</span><span class="p">();</span>
+<a name="line-541"></a>
+<a name="line-542"></a><span class="cp">#endif </span><span class="c1">// HAVE_KFILEMETADATA</span>
+<a name="line-543"></a>
+<a name="line-544"></a> <span class="c1">//--------------Advanced Metadata Configuration --------------</span>
+<a name="line-545"></a>
+<a name="line-546"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">advTab</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AdvancedMetadataTab</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
+<a name="line-547"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span><span class="o">-&gt;</span><span class="n">insertTab</span><span class="p">(</span><span class="n">AdvancedConfig</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">advTab</span><span class="p">,</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@title:tab&quot;</span><span class="p">,</span> <span class="s">&quot;Advanced&quot;</span><span class="p">));</span>
+<a name="line-548"></a>
+<a name="line-549"></a> <span class="c1">//------------------------Sidecars-------------------------</span>
+<a name="line-550"></a>
+<a name="line-551"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">sidecarsPanel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span><span class="p">);</span>
+<a name="line-552"></a> <span class="n">QVBoxLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">sidecarsLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QVBoxLayout</span><span class="p">(</span><span class="n">sidecarsPanel</span><span class="p">);</span>
+<a name="line-553"></a>
+<a name="line-554"></a> <span class="c1">// --------------------------------------------------------</span>
+<a name="line-555"></a>
+<a name="line-556"></a> <span class="n">QGroupBox</span><span class="o">*</span> <span class="n">rwSidecarsGroup</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGroupBox</span><span class="p">;</span>
+<a name="line-557"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">rwSidecarsLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">;</span>
+<a name="line-558"></a>
+<a name="line-559"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">rwSidecarsLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@label&quot;</span><span class="p">,</span> <span class="s">&quot;Reading and Writing to Sidecars&quot;</span><span class="p">));</span>
+<a name="line-560"></a>
+<a name="line-561"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readXMPSidecarBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
+<a name="line-562"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readXMPSidecarBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Read from sidecar files&quot;</span><span class="p">));</span>
+<a name="line-563"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readXMPSidecarBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
+<a name="line-564"></a> <span class="s">&quot;Turn on this option to read metadata from XMP sidecar files when reading metadata.&quot;</span><span class="p">));</span>
+<a name="line-565"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readXMPSidecarBox</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">MetaEngine</span><span class="o">::</span><span class="n">supportXmp</span><span class="p">());</span>
+<a name="line-566"></a>
+<a name="line-567"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeXMPSidecarBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
+<a name="line-568"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeXMPSidecarBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Write to sidecar files&quot;</span><span class="p">));</span>
+<a name="line-569"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeXMPSidecarBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
+<a name="line-570"></a> <span class="s">&quot;Turn on this option to save, as specified, metadata to XMP sidecar files.&quot;</span><span class="p">));</span>
+<a name="line-571"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeXMPSidecarBox</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">MetaEngine</span><span class="o">::</span><span class="n">supportXmp</span><span class="p">());</span>
+<a name="line-572"></a>
+<a name="line-573"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QComboBox</span><span class="p">;</span>
+<a name="line-574"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Write to XMP sidecar for read-only item only&quot;</span><span class="p">),</span> <span class="n">MetaEngine</span><span class="o">::</span><span class="n">WRITE_TO_SIDECAR_ONLY_FOR_READ_ONLY_FILES</span><span class="p">);</span>
+<a name="line-575"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Write to XMP sidecar only&quot;</span><span class="p">),</span> <span class="n">MetaEngine</span><span class="o">::</span><span class="n">WRITE_TO_SIDECAR_ONLY</span><span class="p">);</span>
+<a name="line-576"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Write to item and XMP Sidecar&quot;</span><span class="p">),</span> <span class="n">MetaEngine</span><span class="o">::</span><span class="n">WRITE_TO_SIDECAR_AND_FILE</span><span class="p">);</span>
+<a name="line-577"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span><span class="o">-&gt;</span><span class="n">setToolTip</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:tooltip&quot;</span><span class="p">,</span> <span class="s">&quot;Specify the exact mode of XMP sidecar writing&quot;</span><span class="p">));</span>
+<a name="line-578"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
+<a name="line-579"></a>
+<a name="line-580"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sidecarFileNameBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
+<a name="line-581"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sidecarFileNameBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Sidecar file names are compatible with commercial programs&quot;</span><span class="p">));</span>
+<a name="line-582"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sidecarFileNameBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
+<a name="line-583"></a> <span class="s">&quot;Turn on this option to create the XMP sidecar files with a compatible &quot;</span>
+<a name="line-584"></a> <span class="s">&quot;file name (BASENAME.xmp) used by many commercial programs. &quot;</span>
+<a name="line-585"></a> <span class="s">&quot;For Darktable do not enable this option.&quot;</span><span class="p">));</span>
+<a name="line-586"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sidecarFileNameBox</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
+<a name="line-587"></a>
+<a name="line-588"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">writeXMPSidecarBox</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-589"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
+<a name="line-590"></a>
+<a name="line-591"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">writeXMPSidecarBox</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-592"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sidecarFileNameBox</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
+<a name="line-593"></a>
+<a name="line-594"></a> <span class="n">rwSidecarsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">rwSidecarsLabel</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-595"></a> <span class="n">rwSidecarsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">readXMPSidecarBox</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-596"></a> <span class="n">rwSidecarsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">writeXMPSidecarBox</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-597"></a> <span class="n">rwSidecarsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
+<a name="line-598"></a> <span class="n">rwSidecarsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sidecarFileNameBox</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
+<a name="line-599"></a> <span class="n">rwSidecarsLayout</span><span class="o">-&gt;</span><span class="n">setColumnStretch</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
+<a name="line-600"></a> <span class="n">rwSidecarsGroup</span><span class="o">-&gt;</span><span class="n">setLayout</span><span class="p">(</span><span class="n">rwSidecarsLayout</span><span class="p">);</span>
+<a name="line-601"></a>
+<a name="line-602"></a> <span class="c1">// --------------------------------------------------------</span>
+<a name="line-603"></a>
+<a name="line-604"></a> <span class="n">QGroupBox</span><span class="o">*</span> <span class="k">const</span> <span class="n">extensionsGroup</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGroupBox</span><span class="p">(</span><span class="n">sidecarsPanel</span><span class="p">);</span>
+<a name="line-605"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">extensionsGrid</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">(</span><span class="n">extensionsGroup</span><span class="p">);</span>
+<a name="line-606"></a>
+<a name="line-607"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="n">extensionsGroupLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span>
+<a name="line-608"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;p&gt;Add file types to be recognised as sidecars.&lt;/p&gt;&quot;</span>
+<a name="line-609"></a> <span class="s">&quot;&lt;p&gt;digiKam (optionally) writes metadata to *.xmp sidecar &quot;</span>
+<a name="line-610"></a> <span class="s">&quot;files. Other programs might use different types, which &quot;</span>
+<a name="line-611"></a> <span class="s">&quot;can be specified below. digiKam will neither display these &quot;</span>
+<a name="line-612"></a> <span class="s">&quot;nor read from or write to them. But whenever a matching album &quot;</span>
+<a name="line-613"></a> <span class="s">&quot;item (e.g. </span><span class="se">\&quot;</span><span class="s">image.dng</span><span class="se">\&quot;</span><span class="s"> for </span><span class="se">\&quot;</span><span class="s">image.dng.pp3</span><span class="se">\&quot;</span><span class="s">) is renamed, &quot;</span>
+<a name="line-614"></a> <span class="s">&quot;moved, copied or deleted, the same operation will be done &quot;</span>
+<a name="line-615"></a> <span class="s">&quot;on these sidecar files.&lt;/p&gt;&quot;</span>
+<a name="line-616"></a> <span class="s">&quot;&lt;p&gt;Multiple extensions must be separated by a semicolon &quot;</span>
+<a name="line-617"></a> <span class="s">&quot;or a space.&lt;/p&gt;&quot;</span><span class="p">));</span>
+<a name="line-618"></a> <span class="n">extensionsGroupLabel</span><span class="o">-&gt;</span><span class="n">setWordWrap</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-619"></a>
+<a name="line-620"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">extensionsLogo</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">extensionsGroup</span><span class="p">);</span>
+<a name="line-621"></a> <span class="n">extensionsLogo</span><span class="o">-&gt;</span><span class="n">setPixmap</span><span class="p">(</span><span class="n">QIcon</span><span class="o">::</span><span class="n">fromTheme</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;text-x-texinfo&quot;</span><span class="p">)).</span><span class="n">pixmap</span><span class="p">(</span><span class="mi">48</span><span class="p">));</span>
+<a name="line-622"></a>
+<a name="line-623"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">extensionsEdit</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLineEdit</span><span class="p">(</span><span class="n">extensionsGroup</span><span class="p">);</span>
+<a name="line-624"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">extensionsEdit</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;p&gt;Here you can add extra extensions &quot;</span>
+<a name="line-625"></a> <span class="s">&quot;of sidecars files to be processed alongside &quot;</span>
+<a name="line-626"></a> <span class="s">&quot;regular items. These files will not be visible, &quot;</span>
+<a name="line-627"></a> <span class="s">&quot;but regarded as an extension of the main file. &quot;</span>
+<a name="line-628"></a> <span class="s">&quot;Just write </span><span class="se">\&quot;</span><span class="s">xyz abc</span><span class="se">\&quot;</span><span class="s"> to support files with &quot;</span>
+<a name="line-629"></a> <span class="s">&quot;the *.xyz and *.abc extensions. The internally &quot;</span>
+<a name="line-630"></a> <span class="s">&quot;used sidecars type *.xmp is always included.&lt;/p&gt;&quot;</span><span class="p">));</span>
+<a name="line-631"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">extensionsEdit</span><span class="o">-&gt;</span><span class="n">setClearButtonEnabled</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-632"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">extensionsEdit</span><span class="o">-&gt;</span><span class="n">setPlaceholderText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Enter additional sidecars file extensions.&quot;</span><span class="p">));</span>
+<a name="line-633"></a>
+<a name="line-634"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">extensionsLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">extensionsGroup</span><span class="p">);</span>
+<a name="line-635"></a> <span class="n">extensionsLabel</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Additional &amp;sidecar file extensions&quot;</span><span class="p">));</span>
+<a name="line-636"></a> <span class="n">extensionsLabel</span><span class="o">-&gt;</span><span class="n">setBuddy</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">extensionsEdit</span><span class="p">);</span>
+<a name="line-637"></a>
+<a name="line-638"></a> <span class="n">extensionsGrid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">extensionsGroupLabel</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span>
+<a name="line-639"></a> <span class="n">extensionsGrid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">extensionsLogo</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-640"></a> <span class="n">extensionsGrid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">extensionsLabel</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span>
+<a name="line-641"></a> <span class="n">extensionsGrid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">extensionsEdit</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span>
+<a name="line-642"></a> <span class="n">extensionsGrid</span><span class="o">-&gt;</span><span class="n">setColumnStretch</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
+<a name="line-643"></a>
+<a name="line-644"></a> <span class="c1">// --------------------------------------------------------</span>
+<a name="line-645"></a>
+<a name="line-646"></a> <span class="n">sidecarsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">rwSidecarsGroup</span><span class="p">);</span>
+<a name="line-647"></a> <span class="n">sidecarsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">extensionsGroup</span><span class="p">);</span>
+<a name="line-648"></a> <span class="n">sidecarsLayout</span><span class="o">-&gt;</span><span class="n">addStretch</span><span class="p">();</span>
+<a name="line-649"></a>
+<a name="line-650"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span><span class="o">-&gt;</span><span class="n">insertTab</span><span class="p">(</span><span class="n">Sidecars</span><span class="p">,</span> <span class="n">sidecarsPanel</span><span class="p">,</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@title:tab&quot;</span><span class="p">,</span> <span class="s">&quot;Sidecars&quot;</span><span class="p">));</span>
+<a name="line-651"></a>
+<a name="line-652"></a> <span class="c1">// --------------------------------------------------------</span>
+<a name="line-653"></a>
+<a name="line-654"></a> <span class="n">readSettings</span><span class="p">();</span>
+<a name="line-655"></a>
+<a name="line-656"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">exifRotateBox</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-657"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotExifAutoRotateToggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
+<a name="line-658"></a>
+<a name="line-659"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">clearMetadataIfRescanBox</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-660"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotClearMetadataToggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
+<a name="line-661"></a>
+<a name="line-662"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">writeRawFilesBox</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-663"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotWriteRawFilesToggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
+<a name="line-664"></a><span class="p">}</span>
+<a name="line-665"></a>
+<a name="line-666"></a><span class="n">SetupMetadata</span><span class="o">::~</span><span class="n">SetupMetadata</span><span class="p">()</span>
+<a name="line-667"></a><span class="p">{</span>
+<a name="line-668"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
+<a name="line-669"></a><span class="p">}</span>
+<a name="line-670"></a>
+<a name="line-671"></a><span class="kt">void</span> <span class="n">SetupMetadata</span><span class="o">::</span><span class="n">setActiveMainTab</span><span class="p">(</span><span class="n">MetadataTab</span> <span class="n">tab</span><span class="p">)</span>
+<a name="line-672"></a><span class="p">{</span>
+<a name="line-673"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">tab</span><span class="p">);</span>
+<a name="line-674"></a><span class="p">}</span>
+<a name="line-675"></a>
+<a name="line-676"></a><span class="kt">void</span> <span class="n">SetupMetadata</span><span class="o">::</span><span class="n">setActiveSubTab</span><span class="p">(</span><span class="kt">int</span> <span class="n">tab</span><span class="p">)</span>
+<a name="line-677"></a><span class="p">{</span>
+<a name="line-678"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">displaySubTab</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">tab</span><span class="p">);</span>
+<a name="line-679"></a><span class="p">}</span>
+<a name="line-680"></a>
+<a name="line-681"></a><span class="kt">void</span> <span class="n">SetupMetadata</span><span class="o">::</span><span class="n">applySettings</span><span class="p">()</span>
+<a name="line-682"></a><span class="p">{</span>
+<a name="line-683"></a> <span class="n">MetaEngineSettings</span><span class="o">*</span> <span class="k">const</span> <span class="n">mSettings</span> <span class="o">=</span> <span class="n">MetaEngineSettings</span><span class="o">::</span><span class="n">instance</span><span class="p">();</span>
+<a name="line-684"></a>
+<a name="line-685"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">mSettings</span><span class="p">)</span>
+<a name="line-686"></a> <span class="p">{</span>
+<a name="line-687"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-688"></a> <span class="p">}</span>
+<a name="line-689"></a>
+<a name="line-690"></a> <span class="n">MetaEngineSettingsContainer</span> <span class="n">set</span><span class="p">;</span>
+<a name="line-691"></a>
+<a name="line-692"></a> <span class="n">set</span><span class="p">.</span><span class="n">rotationBehavior</span> <span class="o">=</span> <span class="n">MetaEngineSettingsContainer</span><span class="o">::</span><span class="n">RotateByInternalFlag</span><span class="p">;</span>
+<a name="line-693"></a>
+<a name="line-694"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">allowRotateByMetadata</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
+<a name="line-695"></a> <span class="p">{</span>
+<a name="line-696"></a> <span class="n">set</span><span class="p">.</span><span class="n">rotationBehavior</span> <span class="o">|=</span> <span class="n">MetaEngineSettingsContainer</span><span class="o">::</span><span class="n">RotateByMetadataFlag</span><span class="p">;</span>
+<a name="line-697"></a> <span class="p">}</span>
+<a name="line-698"></a>
+<a name="line-699"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByContents</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
+<a name="line-700"></a> <span class="p">{</span>
+<a name="line-701"></a> <span class="n">set</span><span class="p">.</span><span class="n">rotationBehavior</span> <span class="o">|=</span> <span class="n">MetaEngineSettingsContainer</span><span class="o">::</span><span class="n">RotateByLosslessRotation</span><span class="p">;</span>
+<a name="line-702"></a>
+<a name="line-703"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">allowLossyRotate</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
+<a name="line-704"></a> <span class="p">{</span>
+<a name="line-705"></a> <span class="n">set</span><span class="p">.</span><span class="n">rotationBehavior</span> <span class="o">|=</span> <span class="n">MetaEngineSettingsContainer</span><span class="o">::</span><span class="n">RotateByLossyRotation</span><span class="p">;</span>
+<a name="line-706"></a> <span class="p">}</span>
+<a name="line-707"></a> <span class="p">}</span>
+<a name="line-708"></a>
+<a name="line-709"></a> <span class="n">set</span><span class="p">.</span><span class="n">exifRotate</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exifRotateBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
+<a name="line-710"></a> <span class="n">set</span><span class="p">.</span><span class="n">exifSetOrientation</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exifSetOrientationBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
+<a name="line-711"></a>
+<a name="line-712"></a> <span class="n">set</span><span class="p">.</span><span class="n">saveComments</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveCommentsBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
+<a name="line-713"></a> <span class="n">set</span><span class="p">.</span><span class="n">saveDateTime</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveDateTimeBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
+<a name="line-714"></a> <span class="n">set</span><span class="p">.</span><span class="n">savePickLabel</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">savePickLabelBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
+<a name="line-715"></a> <span class="n">set</span><span class="p">.</span><span class="n">saveColorLabel</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveColorLabelBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
+<a name="line-716"></a> <span class="n">set</span><span class="p">.</span><span class="n">saveRating</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveRatingBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
+<a name="line-717"></a> <span class="n">set</span><span class="p">.</span><span class="n">saveTags</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTagsBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
+<a name="line-718"></a> <span class="n">set</span><span class="p">.</span><span class="n">saveTemplate</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTemplateBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
+<a name="line-719"></a> <span class="n">set</span><span class="p">.</span><span class="n">saveFaceTags</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveFaceTags</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
+<a name="line-720"></a>
+<a name="line-721"></a> <span class="n">set</span><span class="p">.</span><span class="n">useLazySync</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">useLazySync</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
+<a name="line-722"></a> <span class="n">set</span><span class="p">.</span><span class="n">writeRawFiles</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeRawFilesBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
+<a name="line-723"></a> <span class="n">set</span><span class="p">.</span><span class="n">useXMPSidecar4Reading</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readXMPSidecarBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
+<a name="line-724"></a> <span class="n">set</span><span class="p">.</span><span class="n">useCompatibleFileName</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sidecarFileNameBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
+<a name="line-725"></a>
+<a name="line-726"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">writeXMPSidecarBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
+<a name="line-727"></a> <span class="p">{</span>
+<a name="line-728"></a> <span class="n">set</span><span class="p">.</span><span class="n">metadataWritingMode</span> <span class="o">=</span> <span class="p">(</span><span class="n">MetaEngine</span><span class="o">::</span><span class="n">MetadataWritingMode</span><span class="p">)</span>
+<a name="line-729"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span><span class="o">-&gt;</span><span class="n">itemData</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">()).</span><span class="n">toInt</span><span class="p">();</span>
+<a name="line-730"></a> <span class="p">}</span>
+<a name="line-731"></a> <span class="k">else</span>
+<a name="line-732"></a> <span class="p">{</span>
+<a name="line-733"></a> <span class="n">set</span><span class="p">.</span><span class="n">metadataWritingMode</span> <span class="o">=</span> <span class="n">MetaEngine</span><span class="o">::</span><span class="n">WRITE_TO_FILE_ONLY</span><span class="p">;</span>
+<a name="line-734"></a> <span class="p">}</span>
+<a name="line-735"></a>
+<a name="line-736"></a> <span class="n">set</span><span class="p">.</span><span class="n">updateFileTimeStamp</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">updateFileTimeStampBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
+<a name="line-737"></a> <span class="n">set</span><span class="p">.</span><span class="n">rescanImageIfModified</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rescanImageIfModifiedBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
+<a name="line-738"></a> <span class="n">set</span><span class="p">.</span><span class="n">clearMetadataIfRescan</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">clearMetadataIfRescanBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
+<a name="line-739"></a>
+<a name="line-740"></a> <span class="n">set</span><span class="p">.</span><span class="n">sidecarExtensions</span> <span class="o">=</span> <span class="n">cleanUserFilterString</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">extensionsEdit</span><span class="o">-&gt;</span><span class="n">text</span><span class="p">());</span>
+<a name="line-741"></a> <span class="n">set</span><span class="p">.</span><span class="n">sidecarExtensions</span><span class="p">.</span><span class="n">removeAll</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;xmp&quot;</span><span class="p">));</span>
+<a name="line-742"></a> <span class="n">set</span><span class="p">.</span><span class="n">sidecarExtensions</span><span class="p">.</span><span class="n">removeDuplicates</span><span class="p">();</span>
+<a name="line-743"></a>
+<a name="line-744"></a> <span class="n">mSettings</span><span class="o">-&gt;</span><span class="n">setSettings</span><span class="p">(</span><span class="n">set</span><span class="p">);</span>
+<a name="line-745"></a>
+<a name="line-746"></a>
+<a name="line-747"></a><span class="cp">#ifdef HAVE_KFILEMETADATA</span>
+<a name="line-748"></a>
+<a name="line-749"></a> <span class="n">ApplicationSettings</span><span class="o">*</span> <span class="k">const</span> <span class="n">aSettings</span> <span class="o">=</span> <span class="n">ApplicationSettings</span><span class="o">::</span><span class="n">instance</span><span class="p">();</span>
+<a name="line-750"></a>
+<a name="line-751"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">aSettings</span><span class="p">)</span>
+<a name="line-752"></a> <span class="p">{</span>
+<a name="line-753"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-754"></a> <span class="p">}</span>
+<a name="line-755"></a>
+<a name="line-756"></a> <span class="n">aSettings</span><span class="o">-&gt;</span><span class="n">setSyncDigikamToBaloo</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">saveToBalooBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
+<a name="line-757"></a> <span class="n">aSettings</span><span class="o">-&gt;</span><span class="n">setSyncBalooToDigikam</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">readFromBalooBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
+<a name="line-758"></a>
+<a name="line-759"></a> <span class="n">aSettings</span><span class="o">-&gt;</span><span class="n">saveSettings</span><span class="p">();</span>
+<a name="line-760"></a>
+<a name="line-761"></a><span class="cp">#endif </span><span class="c1">// HAVE_KFILEMETADATA</span>
+<a name="line-762"></a>
+<a name="line-763"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagsCfgPanel</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
+<a name="line-764"></a>
+<a name="line-765"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">advTab</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
+<a name="line-766"></a><span class="p">}</span>
+<a name="line-767"></a>
+<a name="line-768"></a><span class="kt">void</span> <span class="n">SetupMetadata</span><span class="o">::</span><span class="n">readSettings</span><span class="p">()</span>
+<a name="line-769"></a><span class="p">{</span>
+<a name="line-770"></a> <span class="n">MetaEngineSettings</span><span class="o">*</span> <span class="k">const</span> <span class="n">mSettings</span> <span class="o">=</span> <span class="n">MetaEngineSettings</span><span class="o">::</span><span class="n">instance</span><span class="p">();</span>
+<a name="line-771"></a>
+<a name="line-772"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">mSettings</span><span class="p">)</span>
+<a name="line-773"></a> <span class="p">{</span>
+<a name="line-774"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-775"></a> <span class="p">}</span>
+<a name="line-776"></a>
+<a name="line-777"></a> <span class="n">MetaEngineSettingsContainer</span> <span class="n">set</span> <span class="o">=</span> <span class="n">mSettings</span><span class="o">-&gt;</span><span class="n">settings</span><span class="p">();</span>
+<a name="line-778"></a>
+<a name="line-779"></a> <span class="k">if</span> <span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">rotationBehavior</span> <span class="o">&amp;</span> <span class="n">MetaEngineSettingsContainer</span><span class="o">::</span><span class="n">RotatingPixels</span><span class="p">)</span>
+<a name="line-780"></a> <span class="p">{</span>
+<a name="line-781"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByContents</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-782"></a> <span class="p">}</span>
+<a name="line-783"></a> <span class="k">else</span>
+<a name="line-784"></a> <span class="p">{</span>
+<a name="line-785"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByFlag</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-786"></a> <span class="p">}</span>
+<a name="line-787"></a>
+<a name="line-788"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowRotateByMetadata</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">rotationBehavior</span> <span class="o">&amp;</span> <span class="n">MetaEngineSettingsContainer</span><span class="o">::</span><span class="n">RotateByMetadataFlag</span><span class="p">);</span>
+<a name="line-789"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowLossyRotate</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">rotationBehavior</span> <span class="o">&amp;</span> <span class="n">MetaEngineSettingsContainer</span><span class="o">::</span><span class="n">RotateByLossyRotation</span><span class="p">);</span>
+<a name="line-790"></a>
+<a name="line-791"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exifAutoRotateOriginal</span> <span class="o">=</span> <span class="n">set</span><span class="p">.</span><span class="n">exifRotate</span><span class="p">;</span>
+<a name="line-792"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exifRotateBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">exifAutoRotateOriginal</span><span class="p">);</span>
+<a name="line-793"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exifSetOrientationBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">exifSetOrientation</span><span class="p">);</span>
+<a name="line-794"></a>
+<a name="line-795"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTagsBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">saveTags</span><span class="p">);</span>
+<a name="line-796"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveCommentsBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">saveComments</span><span class="p">);</span>
+<a name="line-797"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveRatingBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">saveRating</span><span class="p">);</span>
+<a name="line-798"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">savePickLabelBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">savePickLabel</span><span class="p">);</span>
+<a name="line-799"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveColorLabelBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">saveColorLabel</span><span class="p">);</span>
+<a name="line-800"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveDateTimeBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">saveDateTime</span><span class="p">);</span>
+<a name="line-801"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTemplateBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">saveTemplate</span><span class="p">);</span>
+<a name="line-802"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveFaceTags</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">saveFaceTags</span><span class="p">);</span>
+<a name="line-803"></a>
+<a name="line-804"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">useLazySync</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">useLazySync</span><span class="p">);</span>
+<a name="line-805"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeRawFilesBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">writeRawFiles</span><span class="p">);</span>
+<a name="line-806"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readXMPSidecarBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">useXMPSidecar4Reading</span><span class="p">);</span>
+<a name="line-807"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sidecarFileNameBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">useCompatibleFileName</span><span class="p">);</span>
+<a name="line-808"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">updateFileTimeStampBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">updateFileTimeStamp</span><span class="p">);</span>
+<a name="line-809"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rescanImageIfModifiedBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">rescanImageIfModified</span><span class="p">);</span>
+<a name="line-810"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">clearMetadataIfRescanBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">clearMetadataIfRescan</span><span class="p">);</span>
+<a name="line-811"></a>
+<a name="line-812"></a> <span class="k">if</span> <span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">metadataWritingMode</span> <span class="o">==</span> <span class="n">MetaEngine</span><span class="o">::</span><span class="n">WRITE_TO_FILE_ONLY</span><span class="p">)</span>
+<a name="line-813"></a> <span class="p">{</span>
+<a name="line-814"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeXMPSidecarBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
+<a name="line-815"></a> <span class="p">}</span>
+<a name="line-816"></a> <span class="k">else</span>
+<a name="line-817"></a> <span class="p">{</span>
+<a name="line-818"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeXMPSidecarBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-819"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span><span class="o">-&gt;</span><span class="n">findData</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">metadataWritingMode</span><span class="p">));</span>
+<a name="line-820"></a> <span class="p">}</span>
+<a name="line-821"></a>
+<a name="line-822"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">extensionsEdit</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">sidecarExtensions</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39; &#39;</span><span class="p">)));</span>
+<a name="line-823"></a>
+<a name="line-824"></a><span class="cp">#ifdef HAVE_KFILEMETADATA</span>
+<a name="line-825"></a>
+<a name="line-826"></a> <span class="n">ApplicationSettings</span><span class="o">*</span> <span class="k">const</span> <span class="n">aSettings</span> <span class="o">=</span> <span class="n">ApplicationSettings</span><span class="o">::</span><span class="n">instance</span><span class="p">();</span>
+<a name="line-827"></a>
+<a name="line-828"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">aSettings</span><span class="p">)</span>
+<a name="line-829"></a> <span class="p">{</span>
+<a name="line-830"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-831"></a> <span class="p">}</span>
+<a name="line-832"></a>
+<a name="line-833"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveToBalooBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">aSettings</span><span class="o">-&gt;</span><span class="n">getSyncDigikamToBaloo</span><span class="p">());</span>
+<a name="line-834"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readFromBalooBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">aSettings</span><span class="o">-&gt;</span><span class="n">getSyncBalooToDigikam</span><span class="p">());</span>
+<a name="line-835"></a>
+<a name="line-836"></a><span class="cp">#endif </span><span class="c1">// HAVE_KFILEMETADATA</span>
+<a name="line-837"></a>
+<a name="line-838"></a><span class="p">}</span>
+<a name="line-839"></a>
+<a name="line-840"></a><span class="kt">bool</span> <span class="n">SetupMetadata</span><span class="o">::</span><span class="n">exifAutoRotateHasChanged</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-841"></a><span class="p">{</span>
+<a name="line-842"></a> <span class="k">return</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">exifAutoRotateOriginal</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exifRotateBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
+<a name="line-843"></a><span class="p">}</span>
+<a name="line-844"></a>
+<a name="line-845"></a><span class="kt">void</span> <span class="n">SetupMetadata</span><span class="o">::</span><span class="n">slotExifAutoRotateToggled</span><span class="p">(</span><span class="kt">bool</span> <span class="n">b</span><span class="p">)</span>
+<a name="line-846"></a><span class="p">{</span>
+<a name="line-847"></a> <span class="c1">// Show info if rotation was switched off, and only once.</span>
+<a name="line-848"></a>
+<a name="line-849"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">b</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">exifAutoRotateShowedInfo</span> <span class="o">&amp;&amp;</span> <span class="n">exifAutoRotateHasChanged</span><span class="p">())</span>
+<a name="line-850"></a> <span class="p">{</span>
+<a name="line-851"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exifAutoRotateShowedInfo</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-852"></a> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">information</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">applicationName</span><span class="p">(),</span>
+<a name="line-853"></a> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info&quot;</span><span class="p">,</span>
+<a name="line-854"></a> <span class="s">&quot;Switching off exif auto rotation will most probably show &quot;</span>
+<a name="line-855"></a> <span class="s">&quot;your images in a wrong orientation, so only change this &quot;</span>
+<a name="line-856"></a> <span class="s">&quot;option if you explicitly require this.&quot;</span><span class="p">));</span>
+<a name="line-857"></a> <span class="p">}</span>
+<a name="line-858"></a><span class="p">}</span>
+<a name="line-859"></a>
+<a name="line-860"></a><span class="kt">void</span> <span class="n">SetupMetadata</span><span class="o">::</span><span class="n">slotClearMetadataToggled</span><span class="p">(</span><span class="kt">bool</span> <span class="n">b</span><span class="p">)</span>
+<a name="line-861"></a><span class="p">{</span>
+<a name="line-862"></a> <span class="c1">// Show info if delete metadata from the database was switched on, and only once.</span>
+<a name="line-863"></a>
+<a name="line-864"></a> <span class="k">if</span> <span class="p">(</span><span class="n">b</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">clearMetadataShowedInfo</span><span class="p">)</span>
+<a name="line-865"></a> <span class="p">{</span>
+<a name="line-866"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">clearMetadataShowedInfo</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-867"></a> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">information</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">applicationName</span><span class="p">(),</span>
+<a name="line-868"></a> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info&quot;</span><span class="p">,</span>
+<a name="line-869"></a> <span class="s">&quot;Switching on this option and your metadata has been written to the &quot;</span>
+<a name="line-870"></a> <span class="s">&quot;database only and not to the file or sidecar, you will be able to &quot;</span>
+<a name="line-871"></a> <span class="s">&quot;lose inserted metadata such as tags, keywords, or geographic &quot;</span>
+<a name="line-872"></a> <span class="s">&quot;coordinates.&quot;</span><span class="p">));</span>
+<a name="line-873"></a> <span class="p">}</span>
+<a name="line-874"></a><span class="p">}</span>
+<a name="line-875"></a>
+<a name="line-876"></a><span class="kt">void</span> <span class="n">SetupMetadata</span><span class="o">::</span><span class="n">slotWriteRawFilesToggled</span><span class="p">(</span><span class="kt">bool</span> <span class="n">b</span><span class="p">)</span>
+<a name="line-877"></a><span class="p">{</span>
+<a name="line-878"></a> <span class="c1">// Show info if write metadata to raw files was switched on</span>
+<a name="line-879"></a>
+<a name="line-880"></a> <span class="k">if</span> <span class="p">(</span><span class="n">b</span><span class="p">)</span>
+<a name="line-881"></a> <span class="p">{</span>
+<a name="line-882"></a> <span class="n">QApplication</span><span class="o">::</span><span class="n">beep</span><span class="p">();</span>
+<a name="line-883"></a>
+<a name="line-884"></a><span class="hll"> <span class="n">QPointer</span><span class="o">&lt;</span><span class="n">QMessageBox</span><span class="o">&gt;</span> <span class="n">msgBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QMessageBox</span><span class="p">(</span><span class="n">QMessageBox</span><span class="o">::</span><span class="n">Warning</span><span class="p">,</span><span class='error2'>&lt;--- Shadowed declaration</span>
+</span><a name="line-885"></a> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">applicationName</span><span class="p">(),</span>
+<a name="line-886"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;p&gt;&lt;b&gt;Do you really want to enable metadata writing to RAW files?&lt;/b&gt;&lt;/p&gt;&quot;</span>
+<a name="line-887"></a> <span class="s">&quot;&lt;p&gt;DigiKam delegates this task to the Exiv2 library. With different RAW &quot;</span>
+<a name="line-888"></a> <span class="s">&quot;formats, problems are known which can lead to the destruction of RAW &quot;</span>
+<a name="line-889"></a> <span class="s">&quot;files. If you decide to do so, make a backup of your RAW files.&lt;/p&gt;&quot;</span>
+<a name="line-890"></a> <span class="s">&quot;&lt;p&gt;&lt;b&gt;We strongly recommend not to enable this option.&lt;/b&gt;&lt;/p&gt;&quot;</span><span class="p">),</span>
+<a name="line-891"></a> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">Yes</span> <span class="o">|</span> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">No</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-892"></a>
+<a name="line-893"></a> <span class="n">msgBox</span><span class="o">-&gt;</span><span class="n">button</span><span class="p">(</span><span class="n">QMessageBox</span><span class="o">::</span><span class="n">Yes</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Yes I understand&quot;</span><span class="p">));</span>
+<a name="line-894"></a> <span class="n">msgBox</span><span class="o">-&gt;</span><span class="n">setDefaultButton</span><span class="p">(</span><span class="n">QMessageBox</span><span class="o">::</span><span class="n">No</span><span class="p">);</span>
+<a name="line-895"></a>
+<a name="line-896"></a><span class="hll"> <span class="kt">int</span> <span class="n">result</span> <span class="o">=</span> <span class="n">msgBox</span><span class="o">-&gt;</span><span class="n">exec</span><span class="p">();</span><span class='error2'>&lt;--- Shadowed declaration</span>
+</span><a name="line-897"></a> <span class="k">delete</span> <span class="n">msgBox</span><span class="p">;</span>
+<a name="line-898"></a>
+<a name="line-899"></a> <span class="k">if</span> <span class="p">(</span><span class="n">result</span> <span class="o">==</span> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">Yes</span><span class="p">)</span>
+<a name="line-900"></a> <span class="p">{</span>
+<a name="line-901"></a><span class="hll"> <span class="n">QPointer</span><span class="o">&lt;</span><span class="n">QMessageBox</span><span class="o">&gt;</span> <span class="n">msgBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QMessageBox</span><span class="p">(</span><span class="n">QMessageBox</span><span class="o">::</span><span class="n">Warning</span><span class="p">,</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-902"></a> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">applicationName</span><span class="p">(),</span>
+<a name="line-903"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;You would rather disable writing metadata to RAW files?&quot;</span><span class="p">),</span>
+<a name="line-904"></a> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">Yes</span> <span class="o">|</span> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">No</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
+<a name="line-905"></a>
+<a name="line-906"></a><span class="hll"> <span class="kt">int</span> <span class="n">result</span> <span class="o">=</span> <span class="n">msgBox</span><span class="o">-&gt;</span><span class="n">exec</span><span class="p">();</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-907"></a> <span class="k">delete</span> <span class="n">msgBox</span><span class="p">;</span>
+<a name="line-908"></a>
+<a name="line-909"></a> <span class="k">if</span> <span class="p">(</span><span class="n">result</span> <span class="o">==</span> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">No</span><span class="p">)</span>
+<a name="line-910"></a> <span class="p">{</span>
+<a name="line-911"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-912"></a> <span class="p">}</span>
+<a name="line-913"></a> <span class="p">}</span>
+<a name="line-914"></a>
+<a name="line-915"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeRawFilesBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
+<a name="line-916"></a> <span class="p">}</span>
+<a name="line-917"></a><span class="p">}</span>
+<a name="line-918"></a>
+<a name="line-919"></a><span class="p">}</span> <span class="c1">// namespace Digikam</span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/23.html b/static/reports/cppcheck/master/23.html
deleted file mode 100644
index 94669b155..000000000
--- a/static/reports/cppcheck/master/23.html
+++ /dev/null
@@ -1,2199 +0,0 @@
-
-<!DOCTYPE html>
-<html lang="en">
- <head>
- <meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
- <link rel="stylesheet" href="style.css">
- <style>
-.highlight .hll { background-color: #ffffcc }
-.highlight { background: #ffffff; }
-.highlight .c { color: #888888 } /* Comment */
-.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
-.highlight .k { color: #008800; font-weight: bold } /* Keyword */
-.highlight .o { color: #333333 } /* Operator */
-.highlight .ch { color: #888888 } /* Comment.Hashbang */
-.highlight .cm { color: #888888 } /* Comment.Multiline */
-.highlight .cp { color: #557799 } /* Comment.Preproc */
-.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
-.highlight .c1 { color: #888888 } /* Comment.Single */
-.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
-.highlight .gd { color: #A00000 } /* Generic.Deleted */
-.highlight .ge { font-style: italic } /* Generic.Emph */
-.highlight .gr { color: #FF0000 } /* Generic.Error */
-.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
-.highlight .gi { color: #00A000 } /* Generic.Inserted */
-.highlight .go { color: #888888 } /* Generic.Output */
-.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
-.highlight .gs { font-weight: bold } /* Generic.Strong */
-.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.highlight .gt { color: #0044DD } /* Generic.Traceback */
-.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
-.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
-.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
-.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
-.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
-.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
-.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
-.highlight .s { background-color: #fff0f0 } /* Literal.String */
-.highlight .na { color: #0000CC } /* Name.Attribute */
-.highlight .nb { color: #007020 } /* Name.Builtin */
-.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
-.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
-.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
-.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
-.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
-.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
-.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
-.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
-.highlight .nt { color: #007700 } /* Name.Tag */
-.highlight .nv { color: #996633 } /* Name.Variable */
-.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
-.highlight .w { color: #bbbbbb } /* Text.Whitespace */
-.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
-.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
-.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
-.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
-.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
-.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
-.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
-.highlight .sc { color: #0044DD } /* Literal.String.Char */
-.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
-.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
-.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
-.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
-.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
-.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
-.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
-.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
-.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
-.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
-.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
-.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
-.highlight .vc { color: #336699 } /* Name.Variable.Class */
-.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
-.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
-.highlight .vm { color: #996633 } /* Name.Variable.Magic */
-.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
- </style>
- <script language="javascript">
- function getStyle(el,styleProp) {
- if (el.currentStyle)
- var y = el.currentStyle[styleProp];
- else if (window.getComputedStyle)
- var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
- return y;
- }
- function toggle() {
- var el = this.expandable_content;
- var mark = this.expandable_marker;
- if (el.style.display == "block") {
- el.style.display = "none";
- mark.innerHTML = "[+]";
- } else {
- el.style.display = "block";
- mark.innerHTML = "[-]";
- }
- }
- function init_expandables() {
- var elts = document.getElementsByClassName("expandable");
- for (var i = 0; i < elts.length; i++) {
- var el = elts[i];
- var clickable = el.getElementsByTagName("span")[0];
- var marker = clickable.getElementsByClassName("marker")[0];
- var content = el.getElementsByClassName("content")[0];
- var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
- content.style.width = width + "px";
- clickable.expandable_content = content;
- clickable.expandable_marker = marker;
- clickable.onclick = toggle;
- }
- }
- function set_class_display(c, st) {
- var elements = document.querySelectorAll('.' + c),
- len = elements.length;
- for (i = 0; i < len; i++) {
- elements[i].style.display = st;
- }
- }
- function toggle_class_visibility(id) {
- var box = document.getElementById(id);
- set_class_display(id, box.checked ? '' : 'none');
- }
- </script>
- </head>
- <body onload="init_expandables()">
- <div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/utilities/geolocation/geoiface/reversegeocoding/rgwidget.cpp </h1>
- </div>
- <div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> rgwidget.cpp</p>
-<a href='23.html#line-516'> shadowVar 516</a><a href='23.html#line-552'> shadowVar 552</a>
- </div>
- <div id="content">
-<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867
- 868
- 869
- 870
- 871
- 872
- 873
- 874
- 875
- 876
- 877
- 878
- 879
- 880
- 881
- 882
- 883
- 884
- 885
- 886
- 887
- 888
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- 896
- 897
- 898
- 899
- 900
- 901
- 902
- 903
- 904
- 905
- 906
- 907
- 908
- 909
- 910
- 911
- 912
- 913
- 914
- 915
- 916
- 917
- 918
- 919
- 920
- 921
- 922
- 923
- 924
- 925
- 926
- 927
- 928
- 929
- 930
- 931
- 932
- 933
- 934
- 935
- 936
- 937
- 938
- 939
- 940
- 941
- 942
- 943
- 944
- 945
- 946
- 947
- 948
- 949
- 950
- 951
- 952
- 953
- 954
- 955
- 956
- 957
- 958
- 959
- 960
- 961
- 962
- 963
- 964
- 965
- 966
- 967
- 968
- 969
- 970
- 971
- 972
- 973
- 974
- 975
- 976
- 977
- 978
- 979
- 980
- 981
- 982
- 983
- 984
- 985
- 986
- 987
- 988
- 989
- 990
- 991
- 992
- 993
- 994
- 995
- 996
- 997
- 998
- 999
-1000
-1001
-1002
-1003
-1004
-1005
-1006
-1007
-1008
-1009
-1010
-1011
-1012
-1013
-1014
-1015
-1016
-1017
-1018
-1019
-1020
-1021
-1022
-1023
-1024
-1025
-1026
-1027</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
-<a name="line-2"></a><span class="cm"> *</span>
-<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
-<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
-<a name="line-5"></a><span class="cm"> *</span>
-<a name="line-6"></a><span class="cm"> * Date : 2010-05-12</span>
-<a name="line-7"></a><span class="cm"> * Description : A widget to apply Reverse Geocoding</span>
-<a name="line-8"></a><span class="cm"> *</span>
-<a name="line-9"></a><span class="cm"> * Copyright (C) 2010 by Michael G. Hansen &lt;mike at mghansen dot de&gt;</span>
-<a name="line-10"></a><span class="cm"> * Copyright (C) 2010 by Gabriel Voicu &lt;ping dot gabi at gmail dot com&gt;</span>
-<a name="line-11"></a><span class="cm"> *</span>
-<a name="line-12"></a><span class="cm"> * This program is free software; you can redistribute it</span>
-<a name="line-13"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
-<a name="line-14"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
-<a name="line-15"></a><span class="cm"> * either version 2, or (at your option)</span>
-<a name="line-16"></a><span class="cm"> * any later version.</span>
-<a name="line-17"></a><span class="cm"> *</span>
-<a name="line-18"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
-<a name="line-19"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
-<a name="line-20"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
-<a name="line-21"></a><span class="cm"> * GNU General Public License for more details.</span>
-<a name="line-22"></a><span class="cm"> *</span>
-<a name="line-23"></a><span class="cm"> * ============================================================ */</span>
-<a name="line-24"></a>
-<a name="line-25"></a><span class="cp">#include</span> <span class="cpf">&quot;rgwidget.h&quot;</span><span class="cp"></span>
-<a name="line-26"></a>
-<a name="line-27"></a><span class="c1">// Qt includes</span>
-<a name="line-28"></a>
-<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QCheckBox&gt;</span><span class="cp"></span>
-<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QContextMenuEvent&gt;</span><span class="cp"></span>
-<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QHBoxLayout&gt;</span><span class="cp"></span>
-<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QLabel&gt;</span><span class="cp"></span>
-<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QLineEdit&gt;</span><span class="cp"></span>
-<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QList&gt;</span><span class="cp"></span>
-<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QMap&gt;</span><span class="cp"></span>
-<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QPointer&gt;</span><span class="cp"></span>
-<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&lt;QPushButton&gt;</span><span class="cp"></span>
-<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&lt;QTreeView&gt;</span><span class="cp"></span>
-<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&lt;QVBoxLayout&gt;</span><span class="cp"></span>
-<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&lt;QMenu&gt;</span><span class="cp"></span>
-<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&lt;QUrl&gt;</span><span class="cp"></span>
-<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&lt;QInputDialog&gt;</span><span class="cp"></span>
-<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&lt;QAction&gt;</span><span class="cp"></span>
-<a name="line-44"></a><span class="cp">#include</span> <span class="cpf">&lt;QComboBox&gt;</span><span class="cp"></span>
-<a name="line-45"></a><span class="cp">#include</span> <span class="cpf">&lt;QApplication&gt;</span><span class="cp"></span>
-<a name="line-46"></a><span class="cp">#include</span> <span class="cpf">&lt;QMessageBox&gt;</span><span class="cp"></span>
-<a name="line-47"></a>
-<a name="line-48"></a><span class="c1">// KDE includes</span>
-<a name="line-49"></a>
-<a name="line-50"></a><span class="cp">#include</span> <span class="cpf">&lt;kconfiggroup.h&gt;</span><span class="cp"></span>
-<a name="line-51"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
-<a name="line-52"></a>
-<a name="line-53"></a><span class="c1">// local includes</span>
-<a name="line-54"></a>
-<a name="line-55"></a><span class="cp">#include</span> <span class="cpf">&quot;geoifacetypes.h&quot;</span><span class="cp"></span>
-<a name="line-56"></a><span class="cp">#include</span> <span class="cpf">&quot;dlayoutbox.h&quot;</span><span class="cp"></span>
-<a name="line-57"></a><span class="cp">#include</span> <span class="cpf">&quot;gpsundocommand.h&quot;</span><span class="cp"></span>
-<a name="line-58"></a><span class="cp">#include</span> <span class="cpf">&quot;geolocationedit.h&quot;</span><span class="cp"></span>
-<a name="line-59"></a><span class="cp">#include</span> <span class="cpf">&quot;gpsitemmodel.h&quot;</span><span class="cp"></span>
-<a name="line-60"></a><span class="cp">#include</span> <span class="cpf">&quot;gpsitemcontainer.h&quot;</span><span class="cp"></span>
-<a name="line-61"></a><span class="cp">#include</span> <span class="cpf">&quot;backend-geonames-rg.h&quot;</span><span class="cp"></span>
-<a name="line-62"></a><span class="cp">#include</span> <span class="cpf">&quot;backend-osm-rg.h&quot;</span><span class="cp"></span>
-<a name="line-63"></a><span class="cp">#include</span> <span class="cpf">&quot;backend-geonamesUS-rg.h&quot;</span><span class="cp"></span>
-<a name="line-64"></a><span class="cp">#include</span> <span class="cpf">&quot;parsetagstring.h&quot;</span><span class="cp"></span>
-<a name="line-65"></a><span class="cp">#include</span> <span class="cpf">&quot;rgtagmodel.h&quot;</span><span class="cp"></span>
-<a name="line-66"></a><span class="cp">#include</span> <span class="cpf">&quot;simpletreemodel.h&quot;</span><span class="cp"></span>
-<a name="line-67"></a><span class="cp">#include</span> <span class="cpf">&quot;dmessagebox.h&quot;</span><span class="cp"></span>
-<a name="line-68"></a><span class="cp">#include</span> <span class="cpf">&quot;dexpanderbox.h&quot;</span><span class="cp"></span>
-<a name="line-69"></a><span class="cp">#include</span> <span class="cpf">&quot;dmetadata.h&quot;</span><span class="cp"></span>
-<a name="line-70"></a>
-<a name="line-71"></a><span class="cp">#ifdef GPSSYNC_MODELTEST</span>
-<a name="line-72"></a><span class="cp"># include &lt;modeltest.h&gt;</span>
-<a name="line-73"></a><span class="cp">#endif </span><span class="c1">// GPSSYNC_MODELTEST</span>
-<a name="line-74"></a>
-<a name="line-75"></a><span class="k">namespace</span> <span class="n">Digikam</span>
-<a name="line-76"></a><span class="p">{</span>
-<a name="line-77"></a>
-<a name="line-78"></a><span class="cm">/**</span>
-<a name="line-79"></a><span class="cm"> * @class RGWidget</span>
-<a name="line-80"></a><span class="cm"> *</span>
-<a name="line-81"></a><span class="cm"> * @brief The RGWidget class represents the main widget for reverse geocoding.</span>
-<a name="line-82"></a><span class="cm"> */</span>
-<a name="line-83"></a>
-<a name="line-84"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">Private</span>
-<a name="line-85"></a><span class="p">{</span>
-<a name="line-86"></a><span class="k">public</span><span class="o">:</span>
-<a name="line-87"></a>
-<a name="line-88"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
-<a name="line-89"></a> <span class="o">:</span> <span class="n">currentlyAskingCancelQuestion</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
-<a name="line-90"></a> <span class="n">hideOptions</span><span class="p">(</span><span class="nb">true</span><span class="p">),</span>
-<a name="line-91"></a> <span class="n">UIEnabled</span><span class="p">(</span><span class="nb">true</span><span class="p">),</span>
-<a name="line-92"></a> <span class="n">label</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-93"></a> <span class="n">imageModel</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-94"></a> <span class="n">selectionModel</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-95"></a> <span class="n">buttonRGSelected</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-96"></a> <span class="n">undoCommand</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-97"></a> <span class="n">serviceComboBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-98"></a> <span class="n">languageEdit</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-99"></a> <span class="n">currentBackend</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-100"></a> <span class="n">requestedRGCount</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
-<a name="line-101"></a> <span class="n">receivedRGCount</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
-<a name="line-102"></a> <span class="n">buttonHideOptions</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-103"></a> <span class="n">iptc</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-104"></a> <span class="n">xmpLoc</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-105"></a> <span class="n">xmpKey</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-106"></a> <span class="n">UGridContainer</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-107"></a> <span class="n">LGridContainer</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-108"></a> <span class="n">serviceLabel</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-109"></a> <span class="n">languageLabel</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-110"></a> <span class="n">separator</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-111"></a> <span class="n">tagModel</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-112"></a> <span class="n">tagTreeView</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-113"></a> <span class="n">tagSelectionModel</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-114"></a> <span class="n">actionAddCountry</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-115"></a> <span class="n">actionAddState</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-116"></a> <span class="n">actionAddStateDistrict</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-117"></a> <span class="n">actionAddCounty</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-118"></a> <span class="n">actionAddCity</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-119"></a> <span class="n">actionAddCityDistrict</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-120"></a> <span class="n">actionAddSuburb</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-121"></a> <span class="n">actionAddTown</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-122"></a> <span class="n">actionAddVillage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-123"></a> <span class="n">actionAddHamlet</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-124"></a> <span class="n">actionAddStreet</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-125"></a> <span class="n">actionAddHouseNumber</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-126"></a> <span class="n">actionAddPlace</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-127"></a> <span class="n">actionAddLAU2</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-128"></a> <span class="n">actionAddLAU1</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-129"></a> <span class="n">actionAddCustomizedSpacer</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-130"></a> <span class="n">actionRemoveTag</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-131"></a> <span class="n">actionRemoveAllSpacers</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-132"></a> <span class="n">actionAddAllAddressElementsToTag</span><span class="p">(</span><span class="k">nullptr</span><span class="p">)</span>
-<a name="line-133"></a> <span class="p">{</span>
-<a name="line-134"></a> <span class="p">}</span>
-<a name="line-135"></a>
-<a name="line-136"></a> <span class="kt">bool</span> <span class="n">currentlyAskingCancelQuestion</span><span class="p">;</span>
-<a name="line-137"></a> <span class="kt">bool</span> <span class="n">hideOptions</span><span class="p">;</span>
-<a name="line-138"></a> <span class="kt">bool</span> <span class="n">UIEnabled</span><span class="p">;</span>
-<a name="line-139"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="n">label</span><span class="p">;</span>
-<a name="line-140"></a> <span class="n">GPSItemModel</span><span class="o">*</span> <span class="n">imageModel</span><span class="p">;</span>
-<a name="line-141"></a> <span class="n">QItemSelectionModel</span><span class="o">*</span> <span class="n">selectionModel</span><span class="p">;</span>
-<a name="line-142"></a> <span class="n">QPushButton</span><span class="o">*</span> <span class="n">buttonRGSelected</span><span class="p">;</span>
-<a name="line-143"></a>
-<a name="line-144"></a> <span class="n">GPSUndoCommand</span><span class="o">*</span> <span class="n">undoCommand</span><span class="p">;</span>
-<a name="line-145"></a> <span class="n">QModelIndex</span> <span class="n">currentTagTreeIndex</span><span class="p">;</span>
-<a name="line-146"></a>
-<a name="line-147"></a> <span class="n">QComboBox</span><span class="o">*</span> <span class="n">serviceComboBox</span><span class="p">;</span>
-<a name="line-148"></a> <span class="n">QComboBox</span><span class="o">*</span> <span class="n">languageEdit</span><span class="p">;</span>
-<a name="line-149"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">RGInfo</span><span class="o">&gt;</span> <span class="n">photoList</span><span class="p">;</span>
-<a name="line-150"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">RGBackend</span><span class="o">*&gt;</span> <span class="n">backendRGList</span><span class="p">;</span>
-<a name="line-151"></a> <span class="n">RGBackend</span><span class="o">*</span> <span class="n">currentBackend</span><span class="p">;</span>
-<a name="line-152"></a> <span class="kt">int</span> <span class="n">requestedRGCount</span><span class="p">;</span>
-<a name="line-153"></a> <span class="kt">int</span> <span class="n">receivedRGCount</span><span class="p">;</span>
-<a name="line-154"></a> <span class="n">QPushButton</span><span class="o">*</span> <span class="n">buttonHideOptions</span><span class="p">;</span>
-<a name="line-155"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">iptc</span><span class="p">;</span>
-<a name="line-156"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">xmpLoc</span><span class="p">;</span>
-<a name="line-157"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">xmpKey</span><span class="p">;</span>
-<a name="line-158"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="n">UGridContainer</span><span class="p">;</span>
-<a name="line-159"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="n">LGridContainer</span><span class="p">;</span>
-<a name="line-160"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="n">serviceLabel</span><span class="p">;</span>
-<a name="line-161"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="n">languageLabel</span><span class="p">;</span>
-<a name="line-162"></a> <span class="n">DLineWidget</span><span class="o">*</span> <span class="n">separator</span><span class="p">;</span>
-<a name="line-163"></a>
-<a name="line-164"></a> <span class="n">RGTagModel</span><span class="o">*</span> <span class="n">tagModel</span><span class="p">;</span>
-<a name="line-165"></a> <span class="n">QTreeView</span><span class="o">*</span> <span class="n">tagTreeView</span><span class="p">;</span>
-<a name="line-166"></a>
-<a name="line-167"></a> <span class="n">QItemSelectionModel</span><span class="o">*</span> <span class="n">tagSelectionModel</span><span class="p">;</span>
-<a name="line-168"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddCountry</span><span class="p">;</span>
-<a name="line-169"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddState</span><span class="p">;</span>
-<a name="line-170"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddStateDistrict</span><span class="p">;</span>
-<a name="line-171"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddCounty</span><span class="p">;</span>
-<a name="line-172"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddCity</span><span class="p">;</span>
-<a name="line-173"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddCityDistrict</span><span class="p">;</span>
-<a name="line-174"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddSuburb</span><span class="p">;</span>
-<a name="line-175"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddTown</span><span class="p">;</span>
-<a name="line-176"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddVillage</span><span class="p">;</span>
-<a name="line-177"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddHamlet</span><span class="p">;</span>
-<a name="line-178"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddStreet</span><span class="p">;</span>
-<a name="line-179"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddHouseNumber</span><span class="p">;</span>
-<a name="line-180"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddPlace</span><span class="p">;</span>
-<a name="line-181"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddLAU2</span><span class="p">;</span>
-<a name="line-182"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddLAU1</span><span class="p">;</span>
-<a name="line-183"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddCustomizedSpacer</span><span class="p">;</span>
-<a name="line-184"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionRemoveTag</span><span class="p">;</span>
-<a name="line-185"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionRemoveAllSpacers</span><span class="p">;</span>
-<a name="line-186"></a> <span class="n">QAction</span><span class="o">*</span> <span class="n">actionAddAllAddressElementsToTag</span><span class="p">;</span>
-<a name="line-187"></a><span class="p">};</span>
-<a name="line-188"></a>
-<a name="line-189"></a><span class="cm">/**</span>
-<a name="line-190"></a><span class="cm"> * Constructor</span>
-<a name="line-191"></a><span class="cm"> * @param imageModel image model</span>
-<a name="line-192"></a><span class="cm"> * @param selectionModel image selection model</span>
-<a name="line-193"></a><span class="cm"> * @param parent The parent object</span>
-<a name="line-194"></a><span class="cm"> */</span>
-<a name="line-195"></a><span class="n">RGWidget</span><span class="o">::</span><span class="n">RGWidget</span><span class="p">(</span><span class="n">GPSItemModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">imageModel</span><span class="p">,</span> <span class="n">QItemSelectionModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">selectionModel</span><span class="p">,</span>
-<a name="line-196"></a> <span class="n">QAbstractItemModel</span><span class="o">*</span> <span class="n">externTagModel</span><span class="p">,</span> <span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span><span class="p">)</span>
-<a name="line-197"></a> <span class="o">:</span> <span class="n">QWidget</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span>
-<a name="line-198"></a> <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">Private</span><span class="p">())</span>
-<a name="line-199"></a><span class="p">{</span>
-<a name="line-200"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span> <span class="o">=</span> <span class="n">imageModel</span><span class="p">;</span>
-<a name="line-201"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span> <span class="o">=</span> <span class="n">selectionModel</span><span class="p">;</span>
-<a name="line-202"></a>
-<a name="line-203"></a> <span class="c1">// we need to have a main layout and add QVBoxLayout</span>
-<a name="line-204"></a>
-<a name="line-205"></a> <span class="n">QVBoxLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">vBoxLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QVBoxLayout</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
-<a name="line-206"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">UGridContainer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QWidget</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
-<a name="line-207"></a>
-<a name="line-208"></a> <span class="n">vBoxLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">UGridContainer</span><span class="p">);</span>
-<a name="line-209"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QTreeView</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
-<a name="line-210"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span><span class="o">-&gt;</span><span class="n">setHeaderHidden</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-211"></a> <span class="n">vBoxLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span><span class="p">);</span>
-<a name="line-212"></a>
-<a name="line-213"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span> <span class="o">!=</span> <span class="k">nullptr</span><span class="p">);</span>
-<a name="line-214"></a>
-<a name="line-215"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">externTagModel</span><span class="p">)</span>
-<a name="line-216"></a> <span class="p">{</span>
-<a name="line-217"></a> <span class="n">externTagModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SimpleTreeModel</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-218"></a> <span class="p">}</span>
-<a name="line-219"></a>
-<a name="line-220"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">RGTagModel</span><span class="p">(</span><span class="n">externTagModel</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-221"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span><span class="o">-&gt;</span><span class="n">setModel</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">);</span>
-<a name="line-222"></a>
-<a name="line-223"></a><span class="cp">#ifdef GPSSYNC_MODELTEST</span>
-<a name="line-224"></a>
-<a name="line-225"></a> <span class="k">new</span> <span class="nf">ModelTest</span><span class="p">(</span><span class="n">externTagModel</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span><span class="p">);</span>
-<a name="line-226"></a> <span class="k">new</span> <span class="nf">ModelTest</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span><span class="p">);</span>
-<a name="line-227"></a>
-<a name="line-228"></a><span class="cp">#endif </span><span class="c1">// GPSSYNC_MODELTEST</span>
-<a name="line-229"></a>
-<a name="line-230"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagSelectionModel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QItemSelectionModel</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="p">);</span>
-<a name="line-231"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span><span class="o">-&gt;</span><span class="n">setSelectionModel</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagSelectionModel</span><span class="p">);</span>
-<a name="line-232"></a>
-<a name="line-233"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCountry</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add country tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-234"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCountry</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Country}&quot;</span><span class="p">));</span>
-<a name="line-235"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddState</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add state tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-236"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddState</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{State}&quot;</span><span class="p">));</span>
-<a name="line-237"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddStateDistrict</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add state district tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-238"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddStateDistrict</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{State district}&quot;</span><span class="p">));</span>
-<a name="line-239"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCounty</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add county tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-240"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCounty</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{County}&quot;</span><span class="p">));</span>
-<a name="line-241"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCity</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add city tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-242"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCity</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{City}&quot;</span><span class="p">));</span>
-<a name="line-243"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCityDistrict</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add city district tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-244"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCityDistrict</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{City district}&quot;</span><span class="p">));</span>
-<a name="line-245"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddSuburb</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add suburb tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-246"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddSuburb</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Suburb}&quot;</span><span class="p">));</span>
-<a name="line-247"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddTown</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add town tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-248"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddTown</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Town}&quot;</span><span class="p">));</span>
-<a name="line-249"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddVillage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add village tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-250"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddVillage</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Village}&quot;</span><span class="p">));</span>
-<a name="line-251"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddHamlet</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add hamlet tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-252"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddHamlet</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Hamlet}&quot;</span><span class="p">));</span>
-<a name="line-253"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddStreet</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add street&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-254"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddStreet</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Street}&quot;</span><span class="p">));</span>
-<a name="line-255"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddHouseNumber</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add house number tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-256"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddHouseNumber</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{House number}&quot;</span><span class="p">));</span>
-<a name="line-257"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddPlace</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add place&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-258"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddPlace</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Place}&quot;</span><span class="p">));</span>
-<a name="line-259"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddLAU2</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add Local Administrative Area 2&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-260"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddLAU2</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{LAU2}&quot;</span><span class="p">));</span>
-<a name="line-261"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddLAU1</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add Local Administrative Area 1&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-262"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddLAU1</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{LAU1}&quot;</span><span class="p">));</span>
-<a name="line-263"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCustomizedSpacer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add new tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-264"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionRemoveTag</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Remove selected tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-265"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionRemoveAllSpacers</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Remove all control tags below this tag&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-266"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionRemoveAllSpacers</span><span class="o">-&gt;</span><span class="n">setData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Remove all spacers&quot;</span><span class="p">));</span>
-<a name="line-267"></a>
-<a name="line-268"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddAllAddressElementsToTag</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QAction</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Add all address elements&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-269"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">gridLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">UGridContainer</span><span class="p">);</span>
-<a name="line-270"></a>
-<a name="line-271"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Select language:&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">UGridContainer</span><span class="p">);</span>
-<a name="line-272"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QComboBox</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">UGridContainer</span><span class="p">);</span>
-<a name="line-273"></a>
-<a name="line-274"></a> <span class="n">DMetadata</span><span class="o">::</span><span class="n">CountryCodeMap</span> <span class="n">map</span> <span class="o">=</span> <span class="n">DMetadata</span><span class="o">::</span><span class="n">countryCodeMap</span><span class="p">();</span>
-<a name="line-275"></a>
-<a name="line-276"></a> <span class="k">for</span> <span class="p">(</span><span class="n">DMetadata</span><span class="o">::</span><span class="n">CountryCodeMap</span><span class="o">::</span><span class="n">Iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">map</span><span class="p">.</span><span class="n">begin</span><span class="p">()</span> <span class="p">;</span> <span class="n">it</span> <span class="o">!=</span> <span class="n">map</span><span class="p">.</span><span class="n">end</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">it</span><span class="p">)</span>
-<a name="line-277"></a> <span class="p">{</span>
-<a name="line-278"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;%1 - %2&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">it</span><span class="p">.</span><span class="n">key</span><span class="p">()).</span><span class="n">arg</span><span class="p">(</span><span class="n">it</span><span class="p">.</span><span class="n">value</span><span class="p">()),</span> <span class="n">it</span><span class="p">.</span><span class="n">key</span><span class="p">().</span><span class="n">toLower</span><span class="p">());</span>
-<a name="line-279"></a> <span class="p">}</span>
-<a name="line-280"></a>
-<a name="line-281"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Select service:&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">UGridContainer</span><span class="p">);</span>
-<a name="line-282"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceComboBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QComboBox</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">UGridContainer</span><span class="p">);</span>
-<a name="line-283"></a>
-<a name="line-284"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceComboBox</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Open Street Map&quot;</span><span class="p">));</span>
-<a name="line-285"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceComboBox</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Geonames.org place name (non-US)&quot;</span><span class="p">));</span>
-<a name="line-286"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceComboBox</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Geonames.org full address (US only)&quot;</span><span class="p">));</span>
-<a name="line-287"></a>
-<a name="line-288"></a> <span class="n">gridLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceLabel</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
-<a name="line-289"></a> <span class="n">gridLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceComboBox</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
-<a name="line-290"></a> <span class="n">gridLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">languageLabel</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-291"></a> <span class="n">gridLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-292"></a>
-<a name="line-293"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">UGridContainer</span><span class="o">-&gt;</span><span class="n">setLayout</span><span class="p">(</span><span class="n">gridLayout</span><span class="p">);</span>
-<a name="line-294"></a>
-<a name="line-295"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">separator</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DLineWidget</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-296"></a> <span class="n">vBoxLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">separator</span><span class="p">);</span>
-<a name="line-297"></a>
-<a name="line-298"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buttonHideOptions</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QPushButton</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Less options&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-299"></a> <span class="n">vBoxLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buttonHideOptions</span><span class="p">);</span>
-<a name="line-300"></a>
-<a name="line-301"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">LGridContainer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QWidget</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
-<a name="line-302"></a> <span class="n">vBoxLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">LGridContainer</span><span class="p">);</span>
-<a name="line-303"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">LGridLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">LGridContainer</span><span class="p">);</span>
-<a name="line-304"></a>
-<a name="line-305"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">xmpLoc</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">(</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Write tags to XMP&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">LGridContainer</span><span class="p">);</span>
-<a name="line-306"></a>
-<a name="line-307"></a> <span class="n">LGridLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">xmpLoc</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-308"></a>
-<a name="line-309"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">LGridContainer</span><span class="o">-&gt;</span><span class="n">setLayout</span><span class="p">(</span><span class="n">LGridLayout</span><span class="p">);</span>
-<a name="line-310"></a>
-<a name="line-311"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buttonRGSelected</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QPushButton</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Process reverse geocoding&quot;</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-312"></a> <span class="n">vBoxLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buttonRGSelected</span><span class="p">);</span>
-<a name="line-313"></a>
-<a name="line-314"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">backendRGList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="k">new</span> <span class="n">BackendOsmRG</span><span class="p">(</span><span class="k">this</span><span class="p">));</span>
-<a name="line-315"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">backendRGList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="k">new</span> <span class="n">BackendGeonamesRG</span><span class="p">(</span><span class="k">this</span><span class="p">));</span>
-<a name="line-316"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">backendRGList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="k">new</span> <span class="n">BackendGeonamesUSRG</span><span class="p">(</span><span class="k">this</span><span class="p">));</span>
-<a name="line-317"></a>
-<a name="line-318"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span><span class="o">-&gt;</span><span class="n">installEventFilter</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
-<a name="line-319"></a>
-<a name="line-320"></a> <span class="n">updateUIState</span><span class="p">();</span>
-<a name="line-321"></a>
-<a name="line-322"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buttonRGSelected</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">clicked</span><span class="p">()),</span>
-<a name="line-323"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotButtonRGSelected</span><span class="p">()));</span>
-<a name="line-324"></a>
-<a name="line-325"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buttonHideOptions</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">clicked</span><span class="p">()),</span>
-<a name="line-326"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotHideOptions</span><span class="p">()));</span>
-<a name="line-327"></a>
-<a name="line-328"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">selectionChanged</span><span class="p">(</span><span class="n">QItemSelection</span><span class="p">,</span><span class="n">QItemSelection</span><span class="p">)),</span>
-<a name="line-329"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">updateUIState</span><span class="p">()));</span>
-<a name="line-330"></a>
-<a name="line-331"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCountry</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-332"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
-<a name="line-333"></a>
-<a name="line-334"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddState</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-335"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
-<a name="line-336"></a>
-<a name="line-337"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddStateDistrict</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-338"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
-<a name="line-339"></a>
-<a name="line-340"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCounty</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-341"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
-<a name="line-342"></a>
-<a name="line-343"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCity</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-344"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
-<a name="line-345"></a>
-<a name="line-346"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCityDistrict</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-347"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
-<a name="line-348"></a>
-<a name="line-349"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddSuburb</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-350"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
-<a name="line-351"></a>
-<a name="line-352"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddTown</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-353"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
-<a name="line-354"></a>
-<a name="line-355"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddVillage</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-356"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
-<a name="line-357"></a>
-<a name="line-358"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddHamlet</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-359"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
-<a name="line-360"></a>
-<a name="line-361"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddHouseNumber</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-362"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
-<a name="line-363"></a>
-<a name="line-364"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddStreet</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-365"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
-<a name="line-366"></a>
-<a name="line-367"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddPlace</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-368"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
-<a name="line-369"></a>
-<a name="line-370"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddLAU2</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-371"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
-<a name="line-372"></a>
-<a name="line-373"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddLAU1</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-374"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddSingleSpacer</span><span class="p">()));</span>
-<a name="line-375"></a>
-<a name="line-376"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCustomizedSpacer</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-377"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddCustomizedSpacer</span><span class="p">()));</span>
-<a name="line-378"></a>
-<a name="line-379"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddAllAddressElementsToTag</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-380"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddAllAddressElementsToTag</span><span class="p">()));</span>
-<a name="line-381"></a>
-<a name="line-382"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">dataChanged</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">,</span><span class="n">QModelIndex</span><span class="p">)),</span>
-<a name="line-383"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotRegenerateNewTags</span><span class="p">()));</span>
-<a name="line-384"></a>
-<a name="line-385"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionRemoveTag</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-386"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotRemoveTag</span><span class="p">()));</span>
-<a name="line-387"></a>
-<a name="line-388"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionRemoveAllSpacers</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">triggered</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-389"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotRemoveAllSpacers</span><span class="p">()));</span>
-<a name="line-390"></a>
-<a name="line-391"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">backendRGList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-392"></a> <span class="p">{</span>
-<a name="line-393"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">backendRGList</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalRGReady</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">RGInfo</span><span class="o">&gt;&amp;</span><span class="p">)),</span>
-<a name="line-394"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotRGReady</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">RGInfo</span><span class="o">&gt;&amp;</span><span class="p">)));</span>
-<a name="line-395"></a> <span class="p">}</span>
-<a name="line-396"></a>
-<a name="line-397"></a> <span class="kt">int</span> <span class="n">currentServiceIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceComboBox</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">();</span>
-<a name="line-398"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">backendRGList</span><span class="p">[</span><span class="n">currentServiceIndex</span><span class="p">];</span>
-<a name="line-399"></a><span class="p">}</span>
-<a name="line-400"></a>
-<a name="line-401"></a><span class="cm">/**</span>
-<a name="line-402"></a><span class="cm"> * Destructor</span>
-<a name="line-403"></a><span class="cm"> */</span>
-<a name="line-404"></a><span class="n">RGWidget</span><span class="o">::~</span><span class="n">RGWidget</span><span class="p">()</span>
-<a name="line-405"></a><span class="p">{</span>
-<a name="line-406"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
-<a name="line-407"></a><span class="p">}</span>
-<a name="line-408"></a>
-<a name="line-409"></a><span class="cm">/**</span>
-<a name="line-410"></a><span class="cm"> * Enables or disables the containing widgets.</span>
-<a name="line-411"></a><span class="cm"> */</span>
-<a name="line-412"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">updateUIState</span><span class="p">()</span>
-<a name="line-413"></a><span class="p">{</span>
-<a name="line-414"></a> <span class="k">const</span> <span class="kt">bool</span> <span class="n">haveSelection</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="o">-&gt;</span><span class="n">hasSelection</span><span class="p">();</span>
-<a name="line-415"></a>
-<a name="line-416"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buttonRGSelected</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">UIEnabled</span> <span class="o">&amp;&amp;</span> <span class="n">haveSelection</span><span class="p">);</span>
-<a name="line-417"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceLabel</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">UIEnabled</span><span class="p">);</span>
-<a name="line-418"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceComboBox</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">UIEnabled</span><span class="p">);</span>
-<a name="line-419"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageLabel</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">UIEnabled</span><span class="p">);</span>
-<a name="line-420"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">UIEnabled</span><span class="p">);</span>
-<a name="line-421"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buttonHideOptions</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">UIEnabled</span><span class="p">);</span>
-<a name="line-422"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">xmpLoc</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">UIEnabled</span><span class="p">);</span>
-<a name="line-423"></a><span class="p">}</span>
-<a name="line-424"></a>
-<a name="line-425"></a><span class="cm">/**</span>
-<a name="line-426"></a><span class="cm"> * This slot triggeres when the button that start the reverse geocoding process is pressed.</span>
-<a name="line-427"></a><span class="cm"> */</span>
-<a name="line-428"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">slotButtonRGSelected</span><span class="p">()</span>
-<a name="line-429"></a><span class="p">{</span>
-<a name="line-430"></a> <span class="c1">// get the selected images:</span>
-<a name="line-431"></a> <span class="k">const</span> <span class="n">QModelIndexList</span> <span class="n">selectedItems</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="o">-&gt;</span><span class="n">selectedRows</span><span class="p">();</span>
-<a name="line-432"></a> <span class="kt">int</span> <span class="n">currentServiceIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceComboBox</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">();</span>
-<a name="line-433"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">backendRGList</span><span class="p">[</span><span class="n">currentServiceIndex</span><span class="p">];</span>
-<a name="line-434"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span> <span class="o">=</span> <span class="k">new</span> <span class="n">GPSUndoCommand</span><span class="p">();</span>
-<a name="line-435"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Image tags are changed.&quot;</span><span class="p">));</span>
-<a name="line-436"></a>
-<a name="line-437"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">RGInfo</span><span class="o">&gt;</span> <span class="n">photoList</span><span class="p">;</span>
-<a name="line-438"></a> <span class="n">QString</span> <span class="n">wantedLanguage</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span><span class="o">-&gt;</span><span class="n">itemData</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">()).</span><span class="n">toString</span><span class="p">();</span>
-<a name="line-439"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">returnedSpacers</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">getSpacers</span><span class="p">();</span>
-<a name="line-440"></a>
-<a name="line-441"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">selectedItems</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-442"></a> <span class="p">{</span>
-<a name="line-443"></a> <span class="k">const</span> <span class="n">QPersistentModelIndex</span> <span class="n">itemIndex</span> <span class="o">=</span> <span class="n">selectedItems</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
-<a name="line-444"></a> <span class="n">GPSItemContainer</span><span class="o">*</span> <span class="k">const</span> <span class="n">selectedItem</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="o">-&gt;</span><span class="n">itemFromIndex</span><span class="p">(</span><span class="n">itemIndex</span><span class="p">);</span>
-<a name="line-445"></a> <span class="k">const</span> <span class="n">GPSDataContainer</span> <span class="n">gpsData</span> <span class="o">=</span> <span class="n">selectedItem</span><span class="o">-&gt;</span><span class="n">gpsData</span><span class="p">();</span>
-<a name="line-446"></a>
-<a name="line-447"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">gpsData</span><span class="p">.</span><span class="n">hasCoordinates</span><span class="p">())</span>
-<a name="line-448"></a> <span class="k">continue</span><span class="p">;</span>
-<a name="line-449"></a>
-<a name="line-450"></a> <span class="k">const</span> <span class="n">qreal</span> <span class="n">latitude</span> <span class="o">=</span> <span class="n">gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">lat</span><span class="p">();</span>
-<a name="line-451"></a> <span class="k">const</span> <span class="n">qreal</span> <span class="n">longitude</span> <span class="o">=</span> <span class="n">gpsData</span><span class="p">.</span><span class="n">getCoordinates</span><span class="p">().</span><span class="n">lon</span><span class="p">();</span>
-<a name="line-452"></a>
-<a name="line-453"></a> <span class="n">RGInfo</span> <span class="n">photoObj</span><span class="p">;</span>
-<a name="line-454"></a> <span class="n">photoObj</span><span class="p">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">itemIndex</span><span class="p">;</span>
-<a name="line-455"></a> <span class="n">photoObj</span><span class="p">.</span><span class="n">coordinates</span> <span class="o">=</span> <span class="n">GeoCoordinates</span><span class="p">(</span><span class="n">latitude</span><span class="p">,</span> <span class="n">longitude</span><span class="p">);</span>
-<a name="line-456"></a>
-<a name="line-457"></a> <span class="n">photoList</span> <span class="o">&lt;&lt;</span> <span class="n">photoObj</span><span class="p">;</span>
-<a name="line-458"></a>
-<a name="line-459"></a> <span class="n">selectedItem</span><span class="o">-&gt;</span><span class="n">writeTagsToXmp</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">xmpLoc</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
-<a name="line-460"></a> <span class="p">}</span>
-<a name="line-461"></a>
-<a name="line-462"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">photoList</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-463"></a> <span class="p">{</span>
-<a name="line-464"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">receivedRGCount</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-465"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestedRGCount</span> <span class="o">=</span> <span class="n">photoList</span><span class="p">.</span><span class="n">count</span><span class="p">();</span>
-<a name="line-466"></a>
-<a name="line-467"></a> <span class="n">emit</span> <span class="nf">signalSetUIEnabled</span><span class="p">(</span><span class="nb">false</span><span class="p">,</span> <span class="k">this</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">SLOT</span><span class="p">(</span><span class="n">slotRGCanceled</span><span class="p">())));</span>
-<a name="line-468"></a> <span class="n">emit</span> <span class="nf">signalProgressSetup</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">requestedRGCount</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Retrieving RG info -&quot;</span><span class="p">));</span>
-<a name="line-469"></a>
-<a name="line-470"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span><span class="o">-&gt;</span><span class="n">callRGBackend</span><span class="p">(</span><span class="n">photoList</span><span class="p">,</span> <span class="n">wantedLanguage</span><span class="p">);</span>
-<a name="line-471"></a> <span class="p">}</span>
-<a name="line-472"></a><span class="p">}</span>
-<a name="line-473"></a>
-<a name="line-474"></a><span class="cm">/**</span>
-<a name="line-475"></a><span class="cm"> * Hide or shows the extra options.</span>
-<a name="line-476"></a><span class="cm"> */</span>
-<a name="line-477"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">slotHideOptions</span><span class="p">()</span>
-<a name="line-478"></a><span class="p">{</span>
-<a name="line-479"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">hideOptions</span><span class="p">)</span>
-<a name="line-480"></a> <span class="p">{</span>
-<a name="line-481"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">LGridContainer</span><span class="o">-&gt;</span><span class="n">hide</span><span class="p">();</span>
-<a name="line-482"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">hideOptions</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-483"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buttonHideOptions</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;More options&quot;</span><span class="p">));</span>
-<a name="line-484"></a> <span class="p">}</span>
-<a name="line-485"></a> <span class="k">else</span>
-<a name="line-486"></a> <span class="p">{</span>
-<a name="line-487"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">LGridContainer</span><span class="o">-&gt;</span><span class="n">show</span><span class="p">();</span>
-<a name="line-488"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">hideOptions</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-489"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buttonHideOptions</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Less options&quot;</span><span class="p">));</span>
-<a name="line-490"></a> <span class="p">}</span>
-<a name="line-491"></a><span class="p">}</span>
-<a name="line-492"></a>
-<a name="line-493"></a><span class="cm">/**</span>
-<a name="line-494"></a><span class="cm"> * The data has returned from backend and now it&#39;s processed here.</span>
-<a name="line-495"></a><span class="cm"> * @param returnedRGList Contains the data returned by backend.</span>
-<a name="line-496"></a><span class="cm"> */</span>
-<a name="line-497"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">slotRGReady</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">RGInfo</span><span class="o">&gt;&amp;</span> <span class="n">returnedRGList</span><span class="p">)</span>
-<a name="line-498"></a><span class="p">{</span>
-<a name="line-499"></a> <span class="k">const</span> <span class="n">QString</span> <span class="n">errorString</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span><span class="o">-&gt;</span><span class="n">getErrorMessage</span><span class="p">();</span>
-<a name="line-500"></a>
-<a name="line-501"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">errorString</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-502"></a> <span class="p">{</span>
-<a name="line-503"></a> <span class="c1">/// @todo This collides with the message box displayed if the user aborts the RG process</span>
-<a name="line-504"></a>
-<a name="line-505"></a> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">critical</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">applicationName</span><span class="p">(),</span> <span class="n">errorString</span><span class="p">);</span>
-<a name="line-506"></a>
-<a name="line-507"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">receivedRGCount</span><span class="o">+=</span><span class="n">returnedRGList</span><span class="p">.</span><span class="n">count</span><span class="p">();</span>
-<a name="line-508"></a>
-<a name="line-509"></a> <span class="n">emit</span> <span class="nf">signalSetUIEnabled</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-510"></a>
-<a name="line-511"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-512"></a> <span class="p">}</span>
-<a name="line-513"></a>
-<a name="line-514"></a> <span class="n">QString</span> <span class="n">address</span><span class="p">;</span>
-<a name="line-515"></a>
-<a name="line-516"></a><span class="hll"> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">returnedRGList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span><span class='error2'>&lt;--- Shadowed declaration</span>
-</span><a name="line-517"></a> <span class="p">{</span>
-<a name="line-518"></a> <span class="n">QPersistentModelIndex</span> <span class="n">currentImageIndex</span> <span class="o">=</span> <span class="n">returnedRGList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">id</span><span class="p">;</span>
-<a name="line-519"></a>
-<a name="line-520"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">returnedRGList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">rgData</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-521"></a> <span class="p">{</span>
-<a name="line-522"></a> <span class="n">QString</span> <span class="n">addressElementsWantedFormat</span><span class="p">;</span>
-<a name="line-523"></a>
-<a name="line-524"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span><span class="o">-&gt;</span><span class="n">backendName</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Geonames&quot;</span><span class="p">))</span>
-<a name="line-525"></a> <span class="p">{</span>
-<a name="line-526"></a> <span class="n">addressElementsWantedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{Country}/{Place}&quot;</span><span class="p">));</span>
-<a name="line-527"></a> <span class="p">}</span>
-<a name="line-528"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span><span class="o">-&gt;</span><span class="n">backendName</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;GeonamesUS&quot;</span><span class="p">))</span>
-<a name="line-529"></a> <span class="p">{</span>
-<a name="line-530"></a> <span class="n">addressElementsWantedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{LAU2}/{LAU1}/{City}&quot;</span><span class="p">));</span>
-<a name="line-531"></a> <span class="p">}</span>
-<a name="line-532"></a> <span class="k">else</span>
-<a name="line-533"></a> <span class="p">{</span>
-<a name="line-534"></a> <span class="n">addressElementsWantedFormat</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/{Country}/{State}/{State district}/{County}/{City}/{City district}/{Suburb}/{Town}/{Village}/{Hamlet}/{Street}/{House number}&quot;</span><span class="p">));</span>
-<a name="line-535"></a> <span class="p">}</span>
-<a name="line-536"></a>
-<a name="line-537"></a> <span class="n">QStringList</span> <span class="n">combinedResult</span> <span class="o">=</span> <span class="n">makeTagString</span><span class="p">(</span><span class="n">returnedRGList</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">addressElementsWantedFormat</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span><span class="o">-&gt;</span><span class="n">backendName</span><span class="p">());</span>
-<a name="line-538"></a> <span class="n">QString</span> <span class="n">addressFormat</span> <span class="o">=</span> <span class="n">combinedResult</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
-<a name="line-539"></a> <span class="n">QString</span> <span class="n">addressElements</span> <span class="o">=</span> <span class="n">combinedResult</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
-<a name="line-540"></a>
-<a name="line-541"></a> <span class="c1">//removes first &quot;/&quot; from tag addresses</span>
-<a name="line-542"></a>
-<a name="line-543"></a> <span class="n">addressFormat</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-544"></a> <span class="n">addressElements</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-545"></a> <span class="n">addressElementsWantedFormat</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-546"></a>
-<a name="line-547"></a> <span class="k">const</span> <span class="n">QStringList</span> <span class="n">listAddressElementsWantedFormat</span> <span class="o">=</span> <span class="n">addressElementsWantedFormat</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">));</span>
-<a name="line-548"></a> <span class="k">const</span> <span class="n">QStringList</span> <span class="n">listAddressElements</span> <span class="o">=</span> <span class="n">addressElements</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">));</span>
-<a name="line-549"></a> <span class="k">const</span> <span class="n">QStringList</span> <span class="n">listAddressFormat</span> <span class="o">=</span> <span class="n">addressFormat</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">));</span>
-<a name="line-550"></a> <span class="n">QStringList</span> <span class="n">elements</span><span class="p">,</span> <span class="n">resultedData</span><span class="p">;</span>
-<a name="line-551"></a>
-<a name="line-552"></a><span class="hll"> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">listAddressElementsWantedFormat</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-553"></a> <span class="p">{</span>
-<a name="line-554"></a> <span class="n">QString</span> <span class="n">currentAddressFormat</span> <span class="o">=</span> <span class="n">listAddressElementsWantedFormat</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
-<a name="line-555"></a> <span class="kt">int</span> <span class="n">currentIndexFormat</span> <span class="o">=</span> <span class="n">listAddressFormat</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">currentAddressFormat</span><span class="p">,</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-556"></a>
-<a name="line-557"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentIndexFormat</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="line-558"></a> <span class="p">{</span>
-<a name="line-559"></a> <span class="n">elements</span><span class="o">&lt;&lt;</span><span class="n">currentAddressFormat</span><span class="p">;</span>
-<a name="line-560"></a> <span class="n">resultedData</span><span class="o">&lt;&lt;</span><span class="n">listAddressElements</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">currentIndexFormat</span><span class="p">);</span>
-<a name="line-561"></a> <span class="p">}</span>
-<a name="line-562"></a> <span class="p">}</span>
-<a name="line-563"></a>
-<a name="line-564"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">returnedTags</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">addNewData</span><span class="p">(</span><span class="n">elements</span><span class="p">,</span> <span class="n">resultedData</span><span class="p">);</span>
-<a name="line-565"></a> <span class="n">GPSItemContainer</span><span class="o">*</span> <span class="k">const</span> <span class="n">currentItem</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="o">-&gt;</span><span class="n">itemFromIndex</span><span class="p">(</span><span class="n">currentImageIndex</span><span class="p">);</span>
-<a name="line-566"></a>
-<a name="line-567"></a> <span class="n">GPSUndoCommand</span><span class="o">::</span><span class="n">UndoInfo</span> <span class="n">undoInfo</span><span class="p">(</span><span class="n">currentImageIndex</span><span class="p">);</span>
-<a name="line-568"></a> <span class="n">undoInfo</span><span class="p">.</span><span class="n">readOldDataFromItem</span><span class="p">(</span><span class="n">currentItem</span><span class="p">);</span>
-<a name="line-569"></a>
-<a name="line-570"></a> <span class="n">currentItem</span><span class="o">-&gt;</span><span class="n">setTagList</span><span class="p">(</span><span class="n">returnedTags</span><span class="p">);</span>
-<a name="line-571"></a>
-<a name="line-572"></a> <span class="n">undoInfo</span><span class="p">.</span><span class="n">readNewDataFromItem</span><span class="p">(</span><span class="n">currentItem</span><span class="p">);</span>
-<a name="line-573"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span><span class="o">-&gt;</span><span class="n">addUndoInfo</span><span class="p">(</span><span class="n">undoInfo</span><span class="p">);</span>
-<a name="line-574"></a> <span class="p">}</span>
-<a name="line-575"></a> <span class="p">}</span>
-<a name="line-576"></a>
-<a name="line-577"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">receivedRGCount</span> <span class="o">+=</span> <span class="n">returnedRGList</span><span class="p">.</span><span class="n">count</span><span class="p">();</span>
-<a name="line-578"></a>
-<a name="line-579"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">receivedRGCount</span> <span class="o">&gt;=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestedRGCount</span><span class="p">)</span>
-<a name="line-580"></a> <span class="p">{</span>
-<a name="line-581"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currentlyAskingCancelQuestion</span><span class="p">)</span>
-<a name="line-582"></a> <span class="p">{</span>
-<a name="line-583"></a> <span class="c1">// if the user is currently answering the cancel question, do nothing, only report progress</span>
-<a name="line-584"></a>
-<a name="line-585"></a> <span class="n">emit</span> <span class="n">signalProgressChanged</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">receivedRGCount</span><span class="p">);</span>
-<a name="line-586"></a> <span class="p">}</span>
-<a name="line-587"></a> <span class="k">else</span>
-<a name="line-588"></a> <span class="p">{</span>
-<a name="line-589"></a> <span class="n">emit</span> <span class="n">signalUndoCommand</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span><span class="p">);</span>
-<a name="line-590"></a>
-<a name="line-591"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-592"></a>
-<a name="line-593"></a> <span class="n">emit</span> <span class="nf">signalSetUIEnabled</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-594"></a> <span class="p">}</span>
-<a name="line-595"></a> <span class="p">}</span>
-<a name="line-596"></a> <span class="k">else</span>
-<a name="line-597"></a> <span class="p">{</span>
-<a name="line-598"></a> <span class="n">emit</span> <span class="n">signalProgressChanged</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">receivedRGCount</span><span class="p">);</span>
-<a name="line-599"></a> <span class="p">}</span>
-<a name="line-600"></a><span class="p">}</span>
-<a name="line-601"></a>
-<a name="line-602"></a><span class="cm">/**</span>
-<a name="line-603"></a><span class="cm"> * Sets whether the containing widgets are enabled or disabled.</span>
-<a name="line-604"></a><span class="cm"> * @param state If true, the controls are enabled.</span>
-<a name="line-605"></a><span class="cm"> */</span>
-<a name="line-606"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">setUIEnabled</span><span class="p">(</span><span class="k">const</span> <span class="kt">bool</span> <span class="n">state</span><span class="p">)</span>
-<a name="line-607"></a><span class="p">{</span>
-<a name="line-608"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">UIEnabled</span> <span class="o">=</span> <span class="n">state</span><span class="p">;</span>
-<a name="line-609"></a> <span class="n">updateUIState</span><span class="p">();</span>
-<a name="line-610"></a><span class="p">}</span>
-<a name="line-611"></a>
-<a name="line-612"></a><span class="cm">/**</span>
-<a name="line-613"></a><span class="cm"> * Here are filtered the events.</span>
-<a name="line-614"></a><span class="cm"> */</span>
-<a name="line-615"></a><span class="kt">bool</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">eventFilter</span><span class="p">(</span><span class="n">QObject</span><span class="o">*</span> <span class="n">watched</span><span class="p">,</span> <span class="n">QEvent</span><span class="o">*</span> <span class="n">event</span><span class="p">)</span>
-<a name="line-616"></a><span class="p">{</span>
-<a name="line-617"></a> <span class="k">if</span> <span class="p">(</span><span class="n">watched</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span><span class="p">)</span>
-<a name="line-618"></a> <span class="p">{</span>
-<a name="line-619"></a> <span class="k">if</span> <span class="p">((</span><span class="n">event</span><span class="o">-&gt;</span><span class="n">type</span><span class="p">()</span> <span class="o">==</span> <span class="n">QEvent</span><span class="o">::</span><span class="n">ContextMenu</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">UIEnabled</span><span class="p">)</span>
-<a name="line-620"></a> <span class="p">{</span>
-<a name="line-621"></a> <span class="n">QMenu</span><span class="o">*</span> <span class="k">const</span> <span class="n">menu</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QMenu</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span><span class="p">);</span>
-<a name="line-622"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">currentServiceIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceComboBox</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">();</span>
-<a name="line-623"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">backendRGList</span><span class="p">[</span><span class="n">currentServiceIndex</span><span class="p">];</span>
-<a name="line-624"></a> <span class="n">QString</span> <span class="n">backendName</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span><span class="o">-&gt;</span><span class="n">backendName</span><span class="p">();</span>
-<a name="line-625"></a> <span class="n">QContextMenuEvent</span><span class="o">*</span> <span class="k">const</span> <span class="n">e</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">QContextMenuEvent</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">event</span><span class="p">);</span>
-<a name="line-626"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentTagTreeIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagTreeView</span><span class="o">-&gt;</span><span class="n">indexAt</span><span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">());</span>
-<a name="line-627"></a> <span class="k">const</span> <span class="n">Type</span> <span class="n">tagType</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">getTagType</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currentTagTreeIndex</span><span class="p">);</span>
-<a name="line-628"></a>
-<a name="line-629"></a> <span class="k">if</span> <span class="p">(</span><span class="n">backendName</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;OSM&quot;</span><span class="p">))</span>
-<a name="line-630"></a> <span class="p">{</span>
-<a name="line-631"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddAllAddressElementsToTag</span><span class="p">);</span>
-<a name="line-632"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addSeparator</span><span class="p">();</span>
-<a name="line-633"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCountry</span><span class="p">);</span>
-<a name="line-634"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddState</span><span class="p">);</span>
-<a name="line-635"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddStateDistrict</span><span class="p">);</span>
-<a name="line-636"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCounty</span><span class="p">);</span>
-<a name="line-637"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCity</span><span class="p">);</span>
-<a name="line-638"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCityDistrict</span><span class="p">);</span>
-<a name="line-639"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddSuburb</span><span class="p">);</span>
-<a name="line-640"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddTown</span><span class="p">);</span>
-<a name="line-641"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddVillage</span><span class="p">);</span>
-<a name="line-642"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddHamlet</span><span class="p">);</span>
-<a name="line-643"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddStreet</span><span class="p">);</span>
-<a name="line-644"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddHouseNumber</span><span class="p">);</span>
-<a name="line-645"></a> <span class="p">}</span>
-<a name="line-646"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">backendName</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Geonames&quot;</span><span class="p">))</span>
-<a name="line-647"></a> <span class="p">{</span>
-<a name="line-648"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddAllAddressElementsToTag</span><span class="p">);</span>
-<a name="line-649"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCountry</span><span class="p">);</span>
-<a name="line-650"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddPlace</span><span class="p">);</span>
-<a name="line-651"></a> <span class="p">}</span>
-<a name="line-652"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">backendName</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;GeonamesUS&quot;</span><span class="p">))</span>
-<a name="line-653"></a> <span class="p">{</span>
-<a name="line-654"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddAllAddressElementsToTag</span><span class="p">);</span>
-<a name="line-655"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddLAU2</span><span class="p">);</span>
-<a name="line-656"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddLAU1</span><span class="p">);</span>
-<a name="line-657"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCity</span><span class="p">);</span>
-<a name="line-658"></a> <span class="p">}</span>
-<a name="line-659"></a>
-<a name="line-660"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addSeparator</span><span class="p">();</span>
-<a name="line-661"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionAddCustomizedSpacer</span><span class="p">);</span>
-<a name="line-662"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addSeparator</span><span class="p">();</span>
-<a name="line-663"></a>
-<a name="line-664"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tagType</span> <span class="o">==</span> <span class="n">TypeSpacer</span><span class="p">)</span>
-<a name="line-665"></a> <span class="p">{</span>
-<a name="line-666"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionRemoveTag</span><span class="p">);</span>
-<a name="line-667"></a> <span class="p">}</span>
-<a name="line-668"></a>
-<a name="line-669"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addAction</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">actionRemoveAllSpacers</span><span class="p">);</span>
-<a name="line-670"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">exec</span><span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">globalPos</span><span class="p">());</span>
-<a name="line-671"></a> <span class="k">delete</span> <span class="n">menu</span><span class="p">;</span>
-<a name="line-672"></a> <span class="p">}</span>
-<a name="line-673"></a> <span class="p">}</span>
-<a name="line-674"></a>
-<a name="line-675"></a> <span class="k">return</span> <span class="n">QObject</span><span class="o">::</span><span class="n">eventFilter</span><span class="p">(</span><span class="n">watched</span><span class="p">,</span> <span class="n">event</span><span class="p">);</span>
-<a name="line-676"></a><span class="p">}</span>
-<a name="line-677"></a>
-<a name="line-678"></a><span class="cm">/**</span>
-<a name="line-679"></a><span class="cm"> * Saves the settings of widgets contained in reverse geocoding widget.</span>
-<a name="line-680"></a><span class="cm"> * @param group Here are stored the settings.</span>
-<a name="line-681"></a><span class="cm"> */</span>
-<a name="line-682"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">saveSettingsToGroup</span><span class="p">(</span><span class="n">KConfigGroup</span><span class="o">*</span> <span class="k">const</span> <span class="n">group</span><span class="p">)</span>
-<a name="line-683"></a><span class="p">{</span>
-<a name="line-684"></a> <span class="n">group</span><span class="o">-&gt;</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;RG Backend&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceComboBox</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">());</span>
-<a name="line-685"></a> <span class="n">group</span><span class="o">-&gt;</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Language&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">());</span>
-<a name="line-686"></a> <span class="n">group</span><span class="o">-&gt;</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Hide options&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">hideOptions</span><span class="p">);</span>
-<a name="line-687"></a> <span class="n">group</span><span class="o">-&gt;</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;XMP location&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">xmpLoc</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
-<a name="line-688"></a>
-<a name="line-689"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">currentSpacerList</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">getSpacers</span><span class="p">();</span>
-<a name="line-690"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">spacerCount</span> <span class="o">=</span> <span class="n">currentSpacerList</span><span class="p">.</span><span class="n">count</span><span class="p">();</span>
-<a name="line-691"></a> <span class="n">group</span><span class="o">-&gt;</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Spacers count&quot;</span><span class="p">,</span> <span class="n">spacerCount</span><span class="p">);</span>
-<a name="line-692"></a>
-<a name="line-693"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">currentSpacerList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-694"></a> <span class="p">{</span>
-<a name="line-695"></a> <span class="n">QString</span> <span class="n">spacerName</span><span class="p">;</span>
-<a name="line-696"></a> <span class="n">spacerName</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;Spacerlistname %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">i</span><span class="p">));</span>
-<a name="line-697"></a> <span class="n">QString</span> <span class="n">spacerType</span><span class="p">;</span>
-<a name="line-698"></a> <span class="n">spacerType</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;Spacerlisttype %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">i</span><span class="p">));</span>
-<a name="line-699"></a>
-<a name="line-700"></a> <span class="n">QStringList</span> <span class="n">spacerTagNames</span><span class="p">;</span>
-<a name="line-701"></a> <span class="n">QStringList</span> <span class="n">spacerTypes</span><span class="p">;</span>
-<a name="line-702"></a>
-<a name="line-703"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">j</span> <span class="o">&lt;</span> <span class="n">currentSpacerList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span>
-<a name="line-704"></a> <span class="p">{</span>
-<a name="line-705"></a> <span class="n">spacerTagNames</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentSpacerList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">at</span><span class="p">(</span><span class="n">j</span><span class="p">).</span><span class="n">tagName</span><span class="p">);</span>
-<a name="line-706"></a>
-<a name="line-707"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentSpacerList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">at</span><span class="p">(</span><span class="n">j</span><span class="p">).</span><span class="n">tagType</span> <span class="o">==</span> <span class="n">TypeSpacer</span><span class="p">)</span>
-<a name="line-708"></a> <span class="p">{</span>
-<a name="line-709"></a> <span class="n">spacerTypes</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Spacer&quot;</span><span class="p">));</span>
-<a name="line-710"></a> <span class="p">}</span>
-<a name="line-711"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">currentSpacerList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">at</span><span class="p">(</span><span class="n">j</span><span class="p">).</span><span class="n">tagType</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">)</span>
-<a name="line-712"></a> <span class="p">{</span>
-<a name="line-713"></a> <span class="n">spacerTypes</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;NewChild&quot;</span><span class="p">));</span>
-<a name="line-714"></a> <span class="p">}</span>
-<a name="line-715"></a> <span class="k">else</span>
-<a name="line-716"></a> <span class="p">{</span>
-<a name="line-717"></a> <span class="n">spacerTypes</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;OldChild&quot;</span><span class="p">));</span>
-<a name="line-718"></a> <span class="p">}</span>
-<a name="line-719"></a> <span class="p">}</span>
-<a name="line-720"></a>
-<a name="line-721"></a> <span class="n">group</span><span class="o">-&gt;</span><span class="n">writeEntry</span><span class="p">(</span><span class="n">spacerName</span><span class="p">,</span> <span class="n">spacerTagNames</span><span class="p">);</span>
-<a name="line-722"></a> <span class="n">group</span><span class="o">-&gt;</span><span class="n">writeEntry</span><span class="p">(</span><span class="n">spacerType</span><span class="p">,</span> <span class="n">spacerTypes</span><span class="p">);</span>
-<a name="line-723"></a> <span class="p">}</span>
-<a name="line-724"></a><span class="p">}</span>
-<a name="line-725"></a>
-<a name="line-726"></a><span class="cm">/**</span>
-<a name="line-727"></a><span class="cm"> * Restores the settings of widgets contained in reverse geocoding widget.</span>
-<a name="line-728"></a><span class="cm"> * @param group Here are stored the settings.</span>
-<a name="line-729"></a><span class="cm"> */</span>
-<a name="line-730"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">readSettingsFromGroup</span><span class="p">(</span><span class="k">const</span> <span class="n">KConfigGroup</span><span class="o">*</span> <span class="k">const</span> <span class="n">group</span><span class="p">)</span>
-<a name="line-731"></a><span class="p">{</span>
-<a name="line-732"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">spacerCount</span> <span class="o">=</span> <span class="n">group</span><span class="o">-&gt;</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Spacers count&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-733"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">spacersList</span><span class="p">;</span>
-<a name="line-734"></a>
-<a name="line-735"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">spacerCount</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-736"></a> <span class="p">{</span>
-<a name="line-737"></a> <span class="n">QStringList</span> <span class="n">spacerTagNames</span> <span class="o">=</span> <span class="n">group</span><span class="o">-&gt;</span><span class="n">readEntry</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;Spacerlistname %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">i</span><span class="p">),</span> <span class="n">QStringList</span><span class="p">());</span>
-<a name="line-738"></a> <span class="n">QStringList</span> <span class="n">spacerTypes</span> <span class="o">=</span> <span class="n">group</span><span class="o">-&gt;</span><span class="n">readEntry</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;Spacerlisttype %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">i</span><span class="p">),</span> <span class="n">QStringList</span><span class="p">());</span>
-<a name="line-739"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="n">currentSpacerAddress</span><span class="p">;</span>
-<a name="line-740"></a>
-<a name="line-741"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">j</span> <span class="o">&lt;</span> <span class="n">spacerTagNames</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span>
-<a name="line-742"></a> <span class="p">{</span>
-<a name="line-743"></a> <span class="n">TagData</span> <span class="n">currentTagData</span><span class="p">;</span>
-<a name="line-744"></a> <span class="n">currentTagData</span><span class="p">.</span><span class="n">tagName</span> <span class="o">=</span> <span class="n">spacerTagNames</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">j</span><span class="p">);</span>
-<a name="line-745"></a> <span class="n">QString</span> <span class="n">currentTagType</span> <span class="o">=</span> <span class="n">spacerTypes</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">j</span><span class="p">);</span>
-<a name="line-746"></a>
-<a name="line-747"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentTagType</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Spacer&quot;</span><span class="p">))</span>
-<a name="line-748"></a> <span class="p">{</span>
-<a name="line-749"></a> <span class="n">currentTagData</span><span class="p">.</span><span class="n">tagType</span> <span class="o">=</span> <span class="n">TypeSpacer</span><span class="p">;</span>
-<a name="line-750"></a> <span class="p">}</span>
-<a name="line-751"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">currentTagType</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;NewChild&quot;</span><span class="p">))</span>
-<a name="line-752"></a> <span class="p">{</span>
-<a name="line-753"></a> <span class="n">currentTagData</span><span class="p">.</span><span class="n">tagType</span> <span class="o">=</span> <span class="n">TypeNewChild</span><span class="p">;</span>
-<a name="line-754"></a> <span class="p">}</span>
-<a name="line-755"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">currentTagType</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;OldChild&quot;</span><span class="p">))</span>
-<a name="line-756"></a> <span class="p">{</span>
-<a name="line-757"></a> <span class="n">currentTagData</span><span class="p">.</span><span class="n">tagType</span> <span class="o">=</span> <span class="n">TypeChild</span><span class="p">;</span>
-<a name="line-758"></a> <span class="p">}</span>
-<a name="line-759"></a>
-<a name="line-760"></a> <span class="n">currentSpacerAddress</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentTagData</span><span class="p">);</span>
-<a name="line-761"></a> <span class="p">}</span>
-<a name="line-762"></a>
-<a name="line-763"></a> <span class="n">spacersList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentSpacerAddress</span><span class="p">);</span>
-<a name="line-764"></a> <span class="p">}</span>
-<a name="line-765"></a>
-<a name="line-766"></a> <span class="c1">// this make sure that all external tags are added to tag tree view before spacers are re-added</span>
-<a name="line-767"></a>
-<a name="line-768"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">addAllExternalTagsToTreeView</span><span class="p">();</span>
-<a name="line-769"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">readdNewTags</span><span class="p">(</span><span class="n">spacersList</span><span class="p">);</span>
-<a name="line-770"></a>
-<a name="line-771"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceComboBox</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">group</span><span class="o">-&gt;</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;RG Backend&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">));</span>
-<a name="line-772"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">languageEdit</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">group</span><span class="o">-&gt;</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Language&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">));</span>
-<a name="line-773"></a>
-<a name="line-774"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">hideOptions</span> <span class="o">=</span> <span class="o">!</span><span class="p">(</span><span class="n">group</span><span class="o">-&gt;</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Hide options&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">));</span>
-<a name="line-775"></a> <span class="n">slotHideOptions</span><span class="p">();</span>
-<a name="line-776"></a>
-<a name="line-777"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">xmpLoc</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">group</span><span class="o">-&gt;</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;XMP location&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">));</span>
-<a name="line-778"></a><span class="p">}</span>
-<a name="line-779"></a>
-<a name="line-780"></a><span class="cm">/**</span>
-<a name="line-781"></a><span class="cm"> * Adds a tag to tag tree.</span>
-<a name="line-782"></a><span class="cm"> */</span>
-<a name="line-783"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">slotAddSingleSpacer</span><span class="p">()</span>
-<a name="line-784"></a><span class="p">{</span>
-<a name="line-785"></a><span class="cm">/*</span>
-<a name="line-786"></a><span class="cm"> const QModelIndex baseIndex = d-&gt;tagSelectionModel-&gt;currentIndex();</span>
-<a name="line-787"></a><span class="cm">*/</span>
-<a name="line-788"></a> <span class="n">QModelIndex</span> <span class="n">baseIndex</span><span class="p">;</span>
-<a name="line-789"></a>
-<a name="line-790"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currentTagTreeIndex</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
-<a name="line-791"></a> <span class="p">{</span>
-<a name="line-792"></a> <span class="n">baseIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentTagTreeIndex</span><span class="p">;</span>
-<a name="line-793"></a> <span class="p">}</span>
-<a name="line-794"></a> <span class="k">else</span>
-<a name="line-795"></a> <span class="p">{</span>
-<a name="line-796"></a> <span class="n">baseIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagSelectionModel</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">();</span>
-<a name="line-797"></a> <span class="p">}</span>
-<a name="line-798"></a>
-<a name="line-799"></a> <span class="n">QAction</span><span class="o">*</span> <span class="k">const</span> <span class="n">senderAction</span> <span class="o">=</span> <span class="n">qobject_cast</span><span class="o">&lt;</span><span class="n">QAction</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">sender</span><span class="p">());</span>
-<a name="line-800"></a> <span class="n">QString</span> <span class="n">currentSpacerName</span> <span class="o">=</span> <span class="n">senderAction</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">().</span><span class="n">toString</span><span class="p">();</span>
-<a name="line-801"></a>
-<a name="line-802"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">addSpacerTag</span><span class="p">(</span><span class="n">baseIndex</span><span class="p">,</span> <span class="n">currentSpacerName</span><span class="p">);</span>
-<a name="line-803"></a><span class="p">}</span>
-<a name="line-804"></a>
-<a name="line-805"></a><span class="cm">/**</span>
-<a name="line-806"></a><span class="cm"> * Adds a new tag to the tag tree.</span>
-<a name="line-807"></a><span class="cm"> */</span>
-<a name="line-808"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">slotAddCustomizedSpacer</span><span class="p">()</span>
-<a name="line-809"></a><span class="p">{</span>
-<a name="line-810"></a> <span class="n">QModelIndex</span> <span class="n">baseIndex</span><span class="p">;</span>
-<a name="line-811"></a>
-<a name="line-812"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currentTagTreeIndex</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
-<a name="line-813"></a> <span class="p">{</span>
-<a name="line-814"></a> <span class="n">baseIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentTagTreeIndex</span><span class="p">;</span>
-<a name="line-815"></a> <span class="p">}</span>
-<a name="line-816"></a> <span class="k">else</span>
-<a name="line-817"></a> <span class="p">{</span>
-<a name="line-818"></a> <span class="n">baseIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagSelectionModel</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">();</span>
-<a name="line-819"></a> <span class="p">}</span>
-<a name="line-820"></a>
-<a name="line-821"></a> <span class="kt">bool</span> <span class="n">ok</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-822"></a> <span class="n">QString</span> <span class="n">textString</span> <span class="o">=</span> <span class="n">QInputDialog</span><span class="o">::</span><span class="n">getText</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@title:window&quot;</span><span class="p">,</span> <span class="s">&quot;Add new tag:&quot;</span><span class="p">),</span>
-<a name="line-823"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Select a name for the new tag:&quot;</span><span class="p">),</span>
-<a name="line-824"></a> <span class="n">QLineEdit</span><span class="o">::</span><span class="n">Normal</span><span class="p">,</span> <span class="n">QString</span><span class="p">(),</span> <span class="o">&amp;</span><span class="n">ok</span><span class="p">);</span>
-<a name="line-825"></a>
-<a name="line-826"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ok</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">textString</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-827"></a> <span class="p">{</span>
-<a name="line-828"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">addSpacerTag</span><span class="p">(</span><span class="n">baseIndex</span><span class="p">,</span> <span class="n">textString</span><span class="p">);</span>
-<a name="line-829"></a> <span class="p">}</span>
-<a name="line-830"></a><span class="p">}</span>
-<a name="line-831"></a>
-<a name="line-832"></a><span class="cm">/**</span>
-<a name="line-833"></a><span class="cm"> * Removes a tag from tag tree.</span>
-<a name="line-834"></a><span class="cm"> * Note: If the tag is an external, it is no more deleted.</span>
-<a name="line-835"></a><span class="cm"> */</span>
-<a name="line-836"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">slotRemoveTag</span><span class="p">()</span>
-<a name="line-837"></a><span class="p">{</span>
-<a name="line-838"></a> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">baseIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagSelectionModel</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">();</span>
-<a name="line-839"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">deleteTag</span><span class="p">(</span><span class="n">baseIndex</span><span class="p">);</span>
-<a name="line-840"></a><span class="p">}</span>
-<a name="line-841"></a>
-<a name="line-842"></a><span class="cm">/**</span>
-<a name="line-843"></a><span class="cm"> * Removes all spacers.</span>
-<a name="line-844"></a><span class="cm"> */</span>
-<a name="line-845"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">slotRemoveAllSpacers</span><span class="p">()</span>
-<a name="line-846"></a><span class="p">{</span>
-<a name="line-847"></a> <span class="n">QString</span> <span class="n">whatShouldRemove</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Spacers&quot;</span><span class="p">);</span>
-<a name="line-848"></a> <span class="n">QModelIndex</span> <span class="n">baseIndex</span><span class="p">;</span>
-<a name="line-849"></a>
-<a name="line-850"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currentTagTreeIndex</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
-<a name="line-851"></a> <span class="p">{</span>
-<a name="line-852"></a> <span class="n">baseIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentTagTreeIndex</span><span class="p">;</span>
-<a name="line-853"></a> <span class="p">}</span>
-<a name="line-854"></a> <span class="k">else</span>
-<a name="line-855"></a> <span class="p">{</span>
-<a name="line-856"></a> <span class="n">baseIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagSelectionModel</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">();</span>
-<a name="line-857"></a> <span class="p">}</span>
-<a name="line-858"></a>
-<a name="line-859"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">deleteAllSpacersOrNewTags</span><span class="p">(</span><span class="n">baseIndex</span><span class="p">,</span> <span class="n">TypeSpacer</span><span class="p">);</span>
-<a name="line-860"></a><span class="p">}</span>
-<a name="line-861"></a>
-<a name="line-862"></a><span class="cm">/**</span>
-<a name="line-863"></a><span class="cm"> * Re-adds all deleted tags based on Undo/Redo widget.</span>
-<a name="line-864"></a><span class="cm"> */</span>
-<a name="line-865"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">slotReaddNewTags</span><span class="p">()</span>
-<a name="line-866"></a><span class="p">{</span>
-<a name="line-867"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">row</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">row</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">row</span><span class="p">)</span>
-<a name="line-868"></a> <span class="p">{</span>
-<a name="line-869"></a> <span class="n">GPSItemContainer</span><span class="o">*</span> <span class="k">const</span> <span class="n">currentItem</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="o">-&gt;</span><span class="n">itemFromIndex</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imageModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="mi">0</span><span class="p">));</span>
-<a name="line-870"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">TagData</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">tagAddresses</span> <span class="o">=</span> <span class="n">currentItem</span><span class="o">-&gt;</span><span class="n">getTagList</span><span class="p">();</span>
-<a name="line-871"></a>
-<a name="line-872"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">tagAddresses</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-873"></a> <span class="p">{</span>
-<a name="line-874"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">readdNewTags</span><span class="p">(</span><span class="n">tagAddresses</span><span class="p">);</span>
-<a name="line-875"></a> <span class="p">}</span>
-<a name="line-876"></a> <span class="p">}</span>
-<a name="line-877"></a><span class="p">}</span>
-<a name="line-878"></a>
-<a name="line-879"></a><span class="cm">/**</span>
-<a name="line-880"></a><span class="cm"> * Deletes and re-adds all new added tags.</span>
-<a name="line-881"></a><span class="cm"> */</span>
-<a name="line-882"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">slotRegenerateNewTags</span><span class="p">()</span>
-<a name="line-883"></a><span class="p">{</span>
-<a name="line-884"></a> <span class="n">QModelIndex</span> <span class="n">baseIndex</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-885"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">deleteAllSpacersOrNewTags</span><span class="p">(</span><span class="n">baseIndex</span><span class="p">,</span> <span class="n">TypeNewChild</span><span class="p">);</span>
-<a name="line-886"></a>
-<a name="line-887"></a> <span class="n">slotReaddNewTags</span><span class="p">();</span>
-<a name="line-888"></a><span class="p">}</span>
-<a name="line-889"></a>
-<a name="line-890"></a><span class="cm">/**</span>
-<a name="line-891"></a><span class="cm"> * Adds all address elements below the selected tag. The address ellements are order by area size.</span>
-<a name="line-892"></a><span class="cm"> * For example: country &gt; state &gt; state district &gt; city ...</span>
-<a name="line-893"></a><span class="cm"> */</span>
-<a name="line-894"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">slotAddAllAddressElementsToTag</span><span class="p">()</span>
-<a name="line-895"></a><span class="p">{</span>
-<a name="line-896"></a> <span class="n">QModelIndex</span> <span class="n">baseIndex</span><span class="p">;</span>
-<a name="line-897"></a>
-<a name="line-898"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currentTagTreeIndex</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
-<a name="line-899"></a> <span class="p">{</span>
-<a name="line-900"></a> <span class="n">baseIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentTagTreeIndex</span><span class="p">;</span>
-<a name="line-901"></a> <span class="p">}</span>
-<a name="line-902"></a> <span class="k">else</span>
-<a name="line-903"></a> <span class="p">{</span>
-<a name="line-904"></a> <span class="n">baseIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagSelectionModel</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">();</span>
-<a name="line-905"></a> <span class="p">}</span>
-<a name="line-906"></a>
-<a name="line-907"></a> <span class="n">QStringList</span> <span class="n">spacerList</span><span class="p">;</span>
-<a name="line-908"></a>
-<a name="line-909"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span><span class="o">-&gt;</span><span class="n">backendName</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;OSM&quot;</span><span class="p">))</span>
-<a name="line-910"></a> <span class="p">{</span>
-<a name="line-911"></a> <span class="c1">/// @todo Why are these wrapped in QString?</span>
-<a name="line-912"></a>
-<a name="line-913"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Country}&quot;</span><span class="p">));</span>
-<a name="line-914"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{State}&quot;</span><span class="p">));</span>
-<a name="line-915"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{State district}&quot;</span><span class="p">));</span>
-<a name="line-916"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{County}&quot;</span><span class="p">));</span>
-<a name="line-917"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{City}&quot;</span><span class="p">));</span>
-<a name="line-918"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{City district}&quot;</span><span class="p">));</span>
-<a name="line-919"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Suburb}&quot;</span><span class="p">));</span>
-<a name="line-920"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Town}&quot;</span><span class="p">));</span>
-<a name="line-921"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Village}&quot;</span><span class="p">));</span>
-<a name="line-922"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Hamlet}&quot;</span><span class="p">));</span>
-<a name="line-923"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Street}&quot;</span><span class="p">));</span>
-<a name="line-924"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{House number}&quot;</span><span class="p">));</span>
-<a name="line-925"></a> <span class="p">}</span>
-<a name="line-926"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span><span class="o">-&gt;</span><span class="n">backendName</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Geonames&quot;</span><span class="p">))</span>
-<a name="line-927"></a> <span class="p">{</span>
-<a name="line-928"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Country}&quot;</span><span class="p">));</span>
-<a name="line-929"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{Place}&quot;</span><span class="p">));</span>
-<a name="line-930"></a> <span class="p">}</span>
-<a name="line-931"></a> <span class="k">else</span>
-<a name="line-932"></a> <span class="p">{</span>
-<a name="line-933"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{LAU1}&quot;</span><span class="p">));</span>
-<a name="line-934"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{LAU2}&quot;</span><span class="p">));</span>
-<a name="line-935"></a> <span class="n">spacerList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{City}&quot;</span><span class="p">));</span>
-<a name="line-936"></a> <span class="p">}</span>
-<a name="line-937"></a>
-<a name="line-938"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagModel</span><span class="o">-&gt;</span><span class="n">addAllSpacersToTag</span><span class="p">(</span><span class="n">baseIndex</span><span class="p">,</span> <span class="n">spacerList</span><span class="p">,</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-939"></a><span class="p">}</span>
-<a name="line-940"></a>
-<a name="line-941"></a><span class="kt">void</span> <span class="n">RGWidget</span><span class="o">::</span><span class="n">slotRGCanceled</span><span class="p">()</span>
-<a name="line-942"></a><span class="p">{</span>
-<a name="line-943"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span><span class="p">)</span>
-<a name="line-944"></a> <span class="p">{</span>
-<a name="line-945"></a> <span class="c1">// the undo command object is not available, therefore</span>
-<a name="line-946"></a> <span class="c1">// RG has probably been finished already</span>
-<a name="line-947"></a>
-<a name="line-948"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-949"></a> <span class="p">}</span>
-<a name="line-950"></a>
-<a name="line-951"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">receivedRGCount</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-952"></a> <span class="p">{</span>
-<a name="line-953"></a> <span class="c1">// Before we abort, ask the user whether he wants to discard</span>
-<a name="line-954"></a> <span class="c1">// the information obtained so far.</span>
-<a name="line-955"></a>
-<a name="line-956"></a> <span class="c1">// ATTENTION: While we ask the question, the RG backend continues running</span>
-<a name="line-957"></a> <span class="c1">// and sends information about new images to this widget.</span>
-<a name="line-958"></a> <span class="c1">// This means that RG might finish while we ask the question!!!</span>
-<a name="line-959"></a>
-<a name="line-960"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentlyAskingCancelQuestion</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-961"></a>
-<a name="line-962"></a> <span class="k">const</span> <span class="n">QString</span> <span class="n">question</span> <span class="o">=</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;%1 out of %2 images have been reverse geocoded. &quot;</span>
-<a name="line-963"></a> <span class="s">&quot;Would you like to keep the tags which were &quot;</span>
-<a name="line-964"></a> <span class="s">&quot;already obtained?&quot;</span><span class="p">,</span>
-<a name="line-965"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">receivedRGCount</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestedRGCount</span><span class="p">);</span>
-<a name="line-966"></a>
-<a name="line-967"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">result</span> <span class="o">=</span> <span class="n">DMessageBox</span><span class="o">::</span><span class="n">showYesNo</span><span class="p">(</span><span class="n">QMessageBox</span><span class="o">::</span><span class="n">Warning</span><span class="p">,</span> <span class="k">this</span><span class="p">,</span>
-<a name="line-968"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Abort reverse geocoding?&quot;</span><span class="p">),</span>
-<a name="line-969"></a> <span class="n">question</span><span class="p">);</span>
-<a name="line-970"></a>
-<a name="line-971"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentlyAskingCancelQuestion</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-972"></a>
-<a name="line-973"></a> <span class="k">if</span> <span class="p">(</span><span class="n">result</span> <span class="o">==</span> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">Cancel</span><span class="p">)</span>
-<a name="line-974"></a> <span class="p">{</span>
-<a name="line-975"></a> <span class="c1">// continue</span>
-<a name="line-976"></a>
-<a name="line-977"></a> <span class="c1">// did RG finish while we asked the question?</span>
-<a name="line-978"></a>
-<a name="line-979"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">receivedRGCount</span><span class="o">==</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">requestedRGCount</span><span class="p">)</span>
-<a name="line-980"></a> <span class="p">{</span>
-<a name="line-981"></a> <span class="c1">// the undo data was delayed, now send it</span>
-<a name="line-982"></a>
-<a name="line-983"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span><span class="p">)</span>
-<a name="line-984"></a> <span class="p">{</span>
-<a name="line-985"></a> <span class="n">emit</span> <span class="n">signalUndoCommand</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span><span class="p">);</span>
-<a name="line-986"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-987"></a> <span class="p">}</span>
-<a name="line-988"></a>
-<a name="line-989"></a> <span class="c1">// unlock the UI</span>
-<a name="line-990"></a>
-<a name="line-991"></a> <span class="n">emit</span> <span class="n">signalSetUIEnabled</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-992"></a> <span class="p">}</span>
-<a name="line-993"></a>
-<a name="line-994"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-995"></a> <span class="p">}</span>
-<a name="line-996"></a>
-<a name="line-997"></a> <span class="k">if</span> <span class="p">(</span><span class="n">result</span> <span class="o">==</span> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">No</span><span class="p">)</span>
-<a name="line-998"></a> <span class="p">{</span>
-<a name="line-999"></a> <span class="c1">// discard the tags</span>
-<a name="line-1000"></a>
-<a name="line-1001"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span><span class="o">-&gt;</span><span class="n">undo</span><span class="p">();</span>
-<a name="line-1002"></a> <span class="p">}</span>
-<a name="line-1003"></a>
-<a name="line-1004"></a> <span class="k">if</span> <span class="p">(</span><span class="n">result</span> <span class="o">==</span> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">Yes</span><span class="p">)</span>
-<a name="line-1005"></a> <span class="p">{</span>
-<a name="line-1006"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span><span class="p">)</span>
-<a name="line-1007"></a> <span class="p">{</span>
-<a name="line-1008"></a> <span class="n">emit</span> <span class="n">signalUndoCommand</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span><span class="p">);</span>
-<a name="line-1009"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-1010"></a> <span class="p">}</span>
-<a name="line-1011"></a> <span class="p">}</span>
-<a name="line-1012"></a> <span class="p">}</span>
-<a name="line-1013"></a>
-<a name="line-1014"></a> <span class="c1">// clean up the RG request:</span>
-<a name="line-1015"></a>
-<a name="line-1016"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentBackend</span><span class="o">-&gt;</span><span class="n">cancelRequests</span><span class="p">();</span>
-<a name="line-1017"></a>
-<a name="line-1018"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span><span class="p">)</span>
-<a name="line-1019"></a> <span class="p">{</span>
-<a name="line-1020"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span><span class="p">;</span>
-<a name="line-1021"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">undoCommand</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-1022"></a> <span class="p">}</span>
-<a name="line-1023"></a>
-<a name="line-1024"></a> <span class="n">emit</span> <span class="n">signalSetUIEnabled</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-1025"></a><span class="p">}</span>
-<a name="line-1026"></a>
-<a name="line-1027"></a><span class="p">}</span> <span class="c1">// namespace Digikam</span>
-</pre></div>
-</td></tr></table>
- </div>
- <div id="footer">
- <p>
- Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
- </br>
- Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
- IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
- <p>
- </div>
- </body>
-</html>
diff --git a/static/reports/cppcheck/master/24.html b/static/reports/cppcheck/master/24.html
deleted file mode 100644
index 914afe10e..000000000
--- a/static/reports/cppcheck/master/24.html
+++ /dev/null
@@ -1,2325 +0,0 @@
-
-<!DOCTYPE html>
-<html lang="en">
- <head>
- <meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
- <link rel="stylesheet" href="style.css">
- <style>
-.highlight .hll { background-color: #ffffcc }
-.highlight { background: #ffffff; }
-.highlight .c { color: #888888 } /* Comment */
-.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
-.highlight .k { color: #008800; font-weight: bold } /* Keyword */
-.highlight .o { color: #333333 } /* Operator */
-.highlight .ch { color: #888888 } /* Comment.Hashbang */
-.highlight .cm { color: #888888 } /* Comment.Multiline */
-.highlight .cp { color: #557799 } /* Comment.Preproc */
-.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
-.highlight .c1 { color: #888888 } /* Comment.Single */
-.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
-.highlight .gd { color: #A00000 } /* Generic.Deleted */
-.highlight .ge { font-style: italic } /* Generic.Emph */
-.highlight .gr { color: #FF0000 } /* Generic.Error */
-.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
-.highlight .gi { color: #00A000 } /* Generic.Inserted */
-.highlight .go { color: #888888 } /* Generic.Output */
-.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
-.highlight .gs { font-weight: bold } /* Generic.Strong */
-.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.highlight .gt { color: #0044DD } /* Generic.Traceback */
-.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
-.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
-.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
-.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
-.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
-.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
-.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
-.highlight .s { background-color: #fff0f0 } /* Literal.String */
-.highlight .na { color: #0000CC } /* Name.Attribute */
-.highlight .nb { color: #007020 } /* Name.Builtin */
-.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
-.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
-.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
-.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
-.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
-.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
-.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
-.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
-.highlight .nt { color: #007700 } /* Name.Tag */
-.highlight .nv { color: #996633 } /* Name.Variable */
-.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
-.highlight .w { color: #bbbbbb } /* Text.Whitespace */
-.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
-.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
-.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
-.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
-.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
-.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
-.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
-.highlight .sc { color: #0044DD } /* Literal.String.Char */
-.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
-.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
-.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
-.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
-.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
-.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
-.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
-.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
-.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
-.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
-.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
-.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
-.highlight .vc { color: #336699 } /* Name.Variable.Class */
-.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
-.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
-.highlight .vm { color: #996633 } /* Name.Variable.Magic */
-.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
- </style>
- <script language="javascript">
- function getStyle(el,styleProp) {
- if (el.currentStyle)
- var y = el.currentStyle[styleProp];
- else if (window.getComputedStyle)
- var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
- return y;
- }
- function toggle() {
- var el = this.expandable_content;
- var mark = this.expandable_marker;
- if (el.style.display == "block") {
- el.style.display = "none";
- mark.innerHTML = "[+]";
- } else {
- el.style.display = "block";
- mark.innerHTML = "[-]";
- }
- }
- function init_expandables() {
- var elts = document.getElementsByClassName("expandable");
- for (var i = 0; i < elts.length; i++) {
- var el = elts[i];
- var clickable = el.getElementsByTagName("span")[0];
- var marker = clickable.getElementsByClassName("marker")[0];
- var content = el.getElementsByClassName("content")[0];
- var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
- content.style.width = width + "px";
- clickable.expandable_content = content;
- clickable.expandable_marker = marker;
- clickable.onclick = toggle;
- }
- }
- function set_class_display(c, st) {
- var elements = document.querySelectorAll('.' + c),
- len = elements.length;
- for (i = 0; i < len; i++) {
- elements[i].style.display = st;
- }
- }
- function toggle_class_visibility(id) {
- var box = document.getElementById(id);
- set_class_display(id, box.checked ? '' : 'none');
- }
- </script>
- </head>
- <body onload="init_expandables()">
- <div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/utilities/geolocation/mapsearches/gpsmarkertiler.cpp </h1>
- </div>
- <div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> gpsmarkertiler.cpp</p>
-<a href='24.html#line-311'> shadowVar 311</a><a href='24.html#line-315'> shadowVar 315</a>
- </div>
- <div id="content">
-<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867
- 868
- 869
- 870
- 871
- 872
- 873
- 874
- 875
- 876
- 877
- 878
- 879
- 880
- 881
- 882
- 883
- 884
- 885
- 886
- 887
- 888
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- 896
- 897
- 898
- 899
- 900
- 901
- 902
- 903
- 904
- 905
- 906
- 907
- 908
- 909
- 910
- 911
- 912
- 913
- 914
- 915
- 916
- 917
- 918
- 919
- 920
- 921
- 922
- 923
- 924
- 925
- 926
- 927
- 928
- 929
- 930
- 931
- 932
- 933
- 934
- 935
- 936
- 937
- 938
- 939
- 940
- 941
- 942
- 943
- 944
- 945
- 946
- 947
- 948
- 949
- 950
- 951
- 952
- 953
- 954
- 955
- 956
- 957
- 958
- 959
- 960
- 961
- 962
- 963
- 964
- 965
- 966
- 967
- 968
- 969
- 970
- 971
- 972
- 973
- 974
- 975
- 976
- 977
- 978
- 979
- 980
- 981
- 982
- 983
- 984
- 985
- 986
- 987
- 988
- 989
- 990
- 991
- 992
- 993
- 994
- 995
- 996
- 997
- 998
- 999
-1000
-1001
-1002
-1003
-1004
-1005
-1006
-1007
-1008
-1009
-1010
-1011
-1012
-1013
-1014
-1015
-1016
-1017
-1018
-1019
-1020
-1021
-1022
-1023
-1024
-1025
-1026
-1027
-1028
-1029
-1030
-1031
-1032
-1033
-1034
-1035
-1036
-1037
-1038
-1039
-1040
-1041
-1042
-1043
-1044
-1045
-1046
-1047
-1048
-1049
-1050
-1051
-1052
-1053
-1054
-1055
-1056
-1057
-1058
-1059
-1060
-1061
-1062
-1063
-1064
-1065
-1066
-1067
-1068
-1069
-1070
-1071
-1072
-1073
-1074
-1075
-1076
-1077
-1078
-1079
-1080
-1081
-1082
-1083
-1084
-1085
-1086
-1087
-1088
-1089
-1090</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
-<a name="line-2"></a><span class="cm"> *</span>
-<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
-<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
-<a name="line-5"></a><span class="cm"> *</span>
-<a name="line-6"></a><span class="cm"> * Date : 2010-07-20</span>
-<a name="line-7"></a><span class="cm"> * Description : GPS search marker tiler</span>
-<a name="line-8"></a><span class="cm"> *</span>
-<a name="line-9"></a><span class="cm"> * Copyright (C) 2010 by Marcel Wiesweg &lt;marcel dot wiesweg at gmx dot de&gt;</span>
-<a name="line-10"></a><span class="cm"> * Copyright (C) 2010 by Gabriel Voicu &lt;ping dot gabi at gmail dot com&gt;</span>
-<a name="line-11"></a><span class="cm"> * Copyright (C) 2010-2011 by Michael G. Hansen &lt;mike at mghansen dot de&gt;</span>
-<a name="line-12"></a><span class="cm"> * Copyright (C) 2015 by Mohamed_Anwer &lt;m_dot_anwer at gmx dot com&gt;</span>
-<a name="line-13"></a><span class="cm"> *</span>
-<a name="line-14"></a><span class="cm"> * This program is free software; you can redistribute it</span>
-<a name="line-15"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
-<a name="line-16"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
-<a name="line-17"></a><span class="cm"> * either version 2, or (at your option)</span>
-<a name="line-18"></a><span class="cm"> * any later version.</span>
-<a name="line-19"></a><span class="cm"> *</span>
-<a name="line-20"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
-<a name="line-21"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
-<a name="line-22"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
-<a name="line-23"></a><span class="cm"> * GNU General Public License for more details.</span>
-<a name="line-24"></a><span class="cm"> *</span>
-<a name="line-25"></a><span class="cm"> * ============================================================ */</span>
-<a name="line-26"></a>
-<a name="line-27"></a><span class="cp">#include</span> <span class="cpf">&quot;gpsmarkertiler.h&quot;</span><span class="cp"></span>
-<a name="line-28"></a>
-<a name="line-29"></a><span class="c1">// Qt includes</span>
-<a name="line-30"></a>
-<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QPair&gt;</span><span class="cp"></span>
-<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QRectF&gt;</span><span class="cp"></span>
-<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QTimer&gt;</span><span class="cp"></span>
-<a name="line-34"></a>
-<a name="line-35"></a><span class="c1">// Local includes</span>
-<a name="line-36"></a>
-<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&quot;groupstatecomputer.h&quot;</span><span class="cp"></span>
-<a name="line-38"></a>
-<a name="line-39"></a><span class="c1">// Local includes</span>
-<a name="line-40"></a>
-<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&quot;gpsiteminfosorter.h&quot;</span><span class="cp"></span>
-<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&quot;dnotificationwrapper.h&quot;</span><span class="cp"></span>
-<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&quot;digikamapp.h&quot;</span><span class="cp"></span>
-<a name="line-44"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
-<a name="line-45"></a><span class="cp">#include</span> <span class="cpf">&quot;dbjobsmanager.h&quot;</span><span class="cp"></span>
-<a name="line-46"></a>
-<a name="line-47"></a><span class="c1">/// @todo Actually use this definition!</span>
-<a name="line-48"></a><span class="k">typedef</span> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">Digikam</span><span class="o">::</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">MapPair</span><span class="p">;</span>
-<a name="line-49"></a>
-<a name="line-50"></a><span class="n">Q_DECLARE_METATYPE</span><span class="p">(</span><span class="n">MapPair</span><span class="p">)</span>
-<a name="line-51"></a>
-<a name="line-52"></a><span class="k">namespace</span> <span class="n">Digikam</span>
-<a name="line-53"></a><span class="p">{</span>
-<a name="line-54"></a>
-<a name="line-55"></a><span class="cm">/**</span>
-<a name="line-56"></a><span class="cm"> * @class GPSMarkerTiler</span>
-<a name="line-57"></a><span class="cm"> *</span>
-<a name="line-58"></a><span class="cm"> * @brief Marker model for storing data needed to display markers on the map. The data is retrieved from Digikam&#39;s database.</span>
-<a name="line-59"></a><span class="cm"> */</span>
-<a name="line-60"></a>
-<a name="line-61"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="nl">MyTile</span> <span class="p">:</span> <span class="k">public</span> <span class="n">Tile</span>
-<a name="line-62"></a><span class="p">{</span>
-<a name="line-63"></a><span class="k">public</span><span class="o">:</span>
-<a name="line-64"></a>
-<a name="line-65"></a> <span class="n">MyTile</span><span class="p">()</span>
-<a name="line-66"></a> <span class="o">:</span> <span class="n">Tile</span><span class="p">()</span>
-<a name="line-67"></a> <span class="p">{</span>
-<a name="line-68"></a> <span class="p">}</span>
-<a name="line-69"></a>
-<a name="line-70"></a> <span class="cm">/**</span>
-<a name="line-71"></a><span class="cm"> * Note: MyTile is only deleted by GPSMarkerTiler::tileDelete.</span>
-<a name="line-72"></a><span class="cm"> * All subclasses of AbstractMarkerTiler have to reimplement tileDelete</span>
-<a name="line-73"></a><span class="cm"> * to delete their Tile subclasses.</span>
-<a name="line-74"></a><span class="cm"> * This was done in order not to have any virtual functions</span>
-<a name="line-75"></a><span class="cm"> * in Tile and its subclasses in order to save memory, since there</span>
-<a name="line-76"></a><span class="cm"> * can be a lot of tiles in a MarkerTiler.</span>
-<a name="line-77"></a><span class="cm"> */</span>
-<a name="line-78"></a> <span class="o">~</span><span class="n">MyTile</span><span class="p">()</span>
-<a name="line-79"></a> <span class="p">{</span>
-<a name="line-80"></a> <span class="p">}</span>
-<a name="line-81"></a>
-<a name="line-82"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="o">&gt;</span> <span class="n">imagesId</span><span class="p">;</span>
-<a name="line-83"></a><span class="p">};</span>
-<a name="line-84"></a>
-<a name="line-85"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">Private</span>
-<a name="line-86"></a><span class="p">{</span>
-<a name="line-87"></a><span class="k">public</span><span class="o">:</span>
-<a name="line-88"></a>
-<a name="line-89"></a> <span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">InternalJobs</span>
-<a name="line-90"></a> <span class="p">{</span>
-<a name="line-91"></a> <span class="k">public</span><span class="o">:</span>
-<a name="line-92"></a>
-<a name="line-93"></a> <span class="n">InternalJobs</span><span class="p">()</span>
-<a name="line-94"></a> <span class="o">:</span> <span class="n">level</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
-<a name="line-95"></a> <span class="n">jobThread</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-96"></a> <span class="n">dataFromDatabase</span><span class="p">()</span>
-<a name="line-97"></a> <span class="p">{</span>
-<a name="line-98"></a> <span class="p">}</span>
-<a name="line-99"></a>
-<a name="line-100"></a> <span class="kt">int</span> <span class="n">level</span><span class="p">;</span>
-<a name="line-101"></a> <span class="n">GPSDBJobsThread</span><span class="o">*</span> <span class="n">jobThread</span><span class="p">;</span>
-<a name="line-102"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">GPSItemInfo</span><span class="o">&gt;</span> <span class="n">dataFromDatabase</span><span class="p">;</span>
-<a name="line-103"></a> <span class="p">};</span>
-<a name="line-104"></a>
-<a name="line-105"></a> <span class="k">explicit</span> <span class="nf">Private</span><span class="p">()</span>
-<a name="line-106"></a> <span class="o">:</span> <span class="n">jobs</span><span class="p">(),</span>
-<a name="line-107"></a> <span class="n">thumbnailLoadThread</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-108"></a> <span class="n">thumbnailMap</span><span class="p">(),</span>
-<a name="line-109"></a> <span class="n">rectList</span><span class="p">(),</span>
-<a name="line-110"></a> <span class="n">rectLevel</span><span class="p">(),</span>
-<a name="line-111"></a> <span class="n">activeState</span><span class="p">(</span><span class="nb">true</span><span class="p">),</span>
-<a name="line-112"></a> <span class="n">imagesHash</span><span class="p">(),</span>
-<a name="line-113"></a> <span class="n">imageFilterModel</span><span class="p">(),</span>
-<a name="line-114"></a> <span class="n">imageAlbumModel</span><span class="p">(),</span>
-<a name="line-115"></a> <span class="n">selectionModel</span><span class="p">(),</span>
-<a name="line-116"></a> <span class="n">currentRegionSelection</span><span class="p">(),</span>
-<a name="line-117"></a> <span class="n">mapGlobalGroupState</span><span class="p">()</span>
-<a name="line-118"></a> <span class="p">{</span>
-<a name="line-119"></a> <span class="p">}</span>
-<a name="line-120"></a>
-<a name="line-121"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">InternalJobs</span><span class="o">&gt;</span> <span class="n">jobs</span><span class="p">;</span>
-<a name="line-122"></a> <span class="n">ThumbnailLoadThread</span><span class="o">*</span> <span class="n">thumbnailLoadThread</span><span class="p">;</span>
-<a name="line-123"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="p">,</span> <span class="n">QVariant</span><span class="o">&gt;</span> <span class="n">thumbnailMap</span><span class="p">;</span>
-<a name="line-124"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QRectF</span><span class="o">&gt;</span> <span class="n">rectList</span><span class="p">;</span>
-<a name="line-125"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">rectLevel</span><span class="p">;</span>
-<a name="line-126"></a> <span class="kt">bool</span> <span class="n">activeState</span><span class="p">;</span>
-<a name="line-127"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="p">,</span> <span class="n">GPSItemInfo</span><span class="o">&gt;</span> <span class="n">imagesHash</span><span class="p">;</span>
-<a name="line-128"></a> <span class="n">ItemFilterModel</span><span class="o">*</span> <span class="n">imageFilterModel</span><span class="p">;</span>
-<a name="line-129"></a> <span class="n">ItemAlbumModel</span><span class="o">*</span> <span class="n">imageAlbumModel</span><span class="p">;</span>
-<a name="line-130"></a> <span class="n">QItemSelectionModel</span><span class="o">*</span> <span class="n">selectionModel</span><span class="p">;</span>
-<a name="line-131"></a> <span class="n">GeoCoordinates</span><span class="o">::</span><span class="n">Pair</span> <span class="n">currentRegionSelection</span><span class="p">;</span>
-<a name="line-132"></a> <span class="n">GeoGroupState</span> <span class="n">mapGlobalGroupState</span><span class="p">;</span>
-<a name="line-133"></a><span class="p">};</span>
-<a name="line-134"></a>
-<a name="line-135"></a><span class="cm">/**</span>
-<a name="line-136"></a><span class="cm"> * @brief Constructor</span>
-<a name="line-137"></a><span class="cm"> * @param parent Parent object</span>
-<a name="line-138"></a><span class="cm"> */</span>
-<a name="line-139"></a><span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">GPSMarkerTiler</span><span class="p">(</span><span class="n">QObject</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span><span class="p">,</span> <span class="n">ItemFilterModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">imageFilterModel</span><span class="p">,</span>
-<a name="line-140"></a> <span class="n">QItemSelectionModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">selectionModel</span><span class="p">)</span>
-<a name="line-141"></a> <span class="o">:</span> <span class="n">AbstractMarkerTiler</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span>
-<a name="line-142"></a> <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">Private</span><span class="p">())</span>
-<a name="line-143"></a><span class="p">{</span>
-<a name="line-144"></a> <span class="n">resetRootTile</span><span class="p">();</span>
-<a name="line-145"></a>
-<a name="line-146"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">thumbnailLoadThread</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ThumbnailLoadThread</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
-<a name="line-147"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageFilterModel</span> <span class="o">=</span> <span class="n">imageFilterModel</span><span class="p">;</span>
-<a name="line-148"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageAlbumModel</span> <span class="o">=</span> <span class="n">qobject_cast</span><span class="o">&lt;</span><span class="n">ItemAlbumModel</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">imageFilterModel</span><span class="o">-&gt;</span><span class="n">sourceModel</span><span class="p">());</span>
-<a name="line-149"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span> <span class="o">=</span> <span class="n">selectionModel</span><span class="p">;</span>
-<a name="line-150"></a>
-<a name="line-151"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">thumbnailLoadThread</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalThumbnailLoaded</span><span class="p">(</span><span class="n">LoadingDescription</span><span class="p">,</span><span class="n">QPixmap</span><span class="p">)),</span>
-<a name="line-152"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotThumbnailLoaded</span><span class="p">(</span><span class="n">LoadingDescription</span><span class="p">,</span><span class="n">QPixmap</span><span class="p">)));</span>
-<a name="line-153"></a>
-<a name="line-154"></a> <span class="n">connect</span><span class="p">(</span><span class="n">CoreDbAccess</span><span class="o">::</span><span class="n">databaseWatch</span><span class="p">(),</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">imageChange</span><span class="p">(</span><span class="n">ImageChangeset</span><span class="p">)),</span>
-<a name="line-155"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotImageChange</span><span class="p">(</span><span class="n">ImageChangeset</span><span class="p">)),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">QueuedConnection</span><span class="p">);</span>
-<a name="line-156"></a>
-<a name="line-157"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imageAlbumModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">imageInfosAdded</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">ItemInfo</span><span class="o">&gt;</span><span class="p">)),</span>
-<a name="line-158"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotNewModelData</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">ItemInfo</span><span class="o">&gt;</span><span class="p">)));</span>
-<a name="line-159"></a>
-<a name="line-160"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">selectionChanged</span><span class="p">(</span><span class="n">QItemSelection</span><span class="p">,</span><span class="n">QItemSelection</span><span class="p">)),</span>
-<a name="line-161"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotSelectionChanged</span><span class="p">(</span><span class="n">QItemSelection</span><span class="p">,</span><span class="n">QItemSelection</span><span class="p">)));</span>
-<a name="line-162"></a><span class="p">}</span>
-<a name="line-163"></a>
-<a name="line-164"></a><span class="cm">/**</span>
-<a name="line-165"></a><span class="cm"> * @brief Destructor</span>
-<a name="line-166"></a><span class="cm"> */</span>
-<a name="line-167"></a><span class="n">GPSMarkerTiler</span><span class="o">::~</span><span class="n">GPSMarkerTiler</span><span class="p">()</span>
-<a name="line-168"></a><span class="p">{</span>
-<a name="line-169"></a> <span class="c1">// WARNING: we have to call clear! By the time AbstractMarkerTiler calls clear,</span>
-<a name="line-170"></a> <span class="c1">// this object does not exist any more, and thus the tiles are not correctly destroyed!</span>
-<a name="line-171"></a>
-<a name="line-172"></a> <span class="n">clear</span><span class="p">();</span>
-<a name="line-173"></a>
-<a name="line-174"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
-<a name="line-175"></a><span class="p">}</span>
-<a name="line-176"></a>
-<a name="line-177"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">regenerateTiles</span><span class="p">()</span>
-<a name="line-178"></a><span class="p">{</span>
-<a name="line-179"></a><span class="p">}</span>
-<a name="line-180"></a>
-<a name="line-181"></a><span class="cm">/**</span>
-<a name="line-182"></a><span class="cm"> * @brief Requests all images inside a given rectangle from the database.</span>
-<a name="line-183"></a><span class="cm"> *</span>
-<a name="line-184"></a><span class="cm"> * This function calls the database for the images found inside a rectangle</span>
-<a name="line-185"></a><span class="cm"> * defined by upperLeft and lowerRight points. The images are returned from</span>
-<a name="line-186"></a><span class="cm"> * the database in batches.</span>
-<a name="line-187"></a><span class="cm"> *</span>
-<a name="line-188"></a><span class="cm"> * @param upperLeft The North-West point.</span>
-<a name="line-189"></a><span class="cm"> * @param lowerRight The South-East point.</span>
-<a name="line-190"></a><span class="cm"> * @param level The requested tiling level.</span>
-<a name="line-191"></a><span class="cm"> */</span>
-<a name="line-192"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">prepareTiles</span><span class="p">(</span><span class="k">const</span> <span class="n">GeoCoordinates</span><span class="o">&amp;</span> <span class="n">upperLeft</span><span class="p">,</span> <span class="k">const</span> <span class="n">GeoCoordinates</span><span class="o">&amp;</span> <span class="n">lowerRight</span><span class="p">,</span> <span class="kt">int</span> <span class="n">level</span><span class="p">)</span>
-<a name="line-193"></a><span class="p">{</span>
-<a name="line-194"></a> <span class="n">qreal</span> <span class="n">lat1</span> <span class="o">=</span> <span class="n">upperLeft</span><span class="p">.</span><span class="n">lat</span><span class="p">();</span>
-<a name="line-195"></a> <span class="n">qreal</span> <span class="n">lng1</span> <span class="o">=</span> <span class="n">upperLeft</span><span class="p">.</span><span class="n">lon</span><span class="p">();</span>
-<a name="line-196"></a> <span class="n">qreal</span> <span class="n">lat2</span> <span class="o">=</span> <span class="n">lowerRight</span><span class="p">.</span><span class="n">lat</span><span class="p">();</span>
-<a name="line-197"></a> <span class="n">qreal</span> <span class="n">lng2</span> <span class="o">=</span> <span class="n">lowerRight</span><span class="p">.</span><span class="n">lon</span><span class="p">();</span>
-<a name="line-198"></a> <span class="k">const</span> <span class="n">QRectF</span> <span class="nf">requestedRect</span><span class="p">(</span><span class="n">lat1</span><span class="p">,</span> <span class="n">lng1</span><span class="p">,</span> <span class="n">lat2</span> <span class="o">-</span> <span class="n">lat1</span><span class="p">,</span> <span class="n">lng2</span> <span class="o">-</span> <span class="n">lng1</span><span class="p">);</span>
-<a name="line-199"></a>
-<a name="line-200"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rectList</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-201"></a> <span class="p">{</span>
-<a name="line-202"></a> <span class="k">if</span> <span class="p">(</span><span class="n">level</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rectLevel</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">))</span>
-<a name="line-203"></a> <span class="p">{</span>
-<a name="line-204"></a> <span class="k">continue</span><span class="p">;</span>
-<a name="line-205"></a> <span class="p">}</span>
-<a name="line-206"></a>
-<a name="line-207"></a> <span class="n">qreal</span> <span class="n">rectLat1</span><span class="p">,</span> <span class="n">rectLng1</span><span class="p">,</span> <span class="n">rectLat2</span><span class="p">,</span> <span class="n">rectLng2</span><span class="p">;</span>
-<a name="line-208"></a> <span class="k">const</span> <span class="n">QRectF</span> <span class="n">currentRect</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rectList</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
-<a name="line-209"></a> <span class="n">currentRect</span><span class="p">.</span><span class="n">getCoords</span><span class="p">(</span><span class="o">&amp;</span><span class="n">rectLat1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">rectLng1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">rectLat2</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">rectLng2</span><span class="p">);</span>
-<a name="line-210"></a>
-<a name="line-211"></a> <span class="c1">// do nothing if this rectangle was already requested</span>
-<a name="line-212"></a>
-<a name="line-213"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentRect</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">requestedRect</span><span class="p">))</span>
-<a name="line-214"></a> <span class="p">{</span>
-<a name="line-215"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-216"></a> <span class="p">}</span>
-<a name="line-217"></a>
-<a name="line-218"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentRect</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">lat1</span><span class="p">,</span> <span class="n">lng1</span><span class="p">))</span>
-<a name="line-219"></a> <span class="p">{</span>
-<a name="line-220"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentRect</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">lat2</span><span class="p">,</span> <span class="n">lng1</span><span class="p">))</span>
-<a name="line-221"></a> <span class="p">{</span>
-<a name="line-222"></a> <span class="n">lng1</span> <span class="o">=</span> <span class="n">rectLng2</span><span class="p">;</span>
-<a name="line-223"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-224"></a> <span class="p">}</span>
-<a name="line-225"></a> <span class="p">}</span>
-<a name="line-226"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">currentRect</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">lat2</span><span class="p">,</span> <span class="n">lng1</span><span class="p">))</span>
-<a name="line-227"></a> <span class="p">{</span>
-<a name="line-228"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentRect</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">lat2</span><span class="p">,</span> <span class="n">lng2</span><span class="p">))</span>
-<a name="line-229"></a> <span class="p">{</span>
-<a name="line-230"></a> <span class="n">lat2</span> <span class="o">=</span> <span class="n">rectLat1</span><span class="p">;</span>
-<a name="line-231"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-232"></a> <span class="p">}</span>
-<a name="line-233"></a> <span class="p">}</span>
-<a name="line-234"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">currentRect</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">lat2</span><span class="p">,</span> <span class="n">lng2</span><span class="p">))</span>
-<a name="line-235"></a> <span class="p">{</span>
-<a name="line-236"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentRect</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">lat1</span><span class="p">,</span> <span class="n">lng2</span><span class="p">))</span>
-<a name="line-237"></a> <span class="p">{</span>
-<a name="line-238"></a> <span class="n">lng2</span> <span class="o">=</span> <span class="n">rectLng1</span><span class="p">;</span>
-<a name="line-239"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-240"></a> <span class="p">}</span>
-<a name="line-241"></a> <span class="p">}</span>
-<a name="line-242"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">currentRect</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">lat1</span><span class="p">,</span> <span class="n">lng2</span><span class="p">))</span>
-<a name="line-243"></a> <span class="p">{</span>
-<a name="line-244"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentRect</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">lat1</span><span class="p">,</span> <span class="n">lng1</span><span class="p">))</span>
-<a name="line-245"></a> <span class="p">{</span>
-<a name="line-246"></a> <span class="n">lat1</span> <span class="o">=</span> <span class="n">rectLat2</span><span class="p">;</span>
-<a name="line-247"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-248"></a> <span class="p">}</span>
-<a name="line-249"></a> <span class="p">}</span>
-<a name="line-250"></a> <span class="p">}</span>
-<a name="line-251"></a>
-<a name="line-252"></a> <span class="k">const</span> <span class="n">QRectF</span> <span class="n">newRect</span><span class="p">(</span><span class="n">lat1</span><span class="p">,</span> <span class="n">lng1</span><span class="p">,</span> <span class="n">lat2</span> <span class="o">-</span> <span class="n">lat1</span><span class="p">,</span> <span class="n">lng2</span> <span class="o">-</span> <span class="n">lng1</span><span class="p">);</span>
-<a name="line-253"></a>
-<a name="line-254"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rectList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">newRect</span><span class="p">);</span>
-<a name="line-255"></a>
-<a name="line-256"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rectLevel</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">level</span><span class="p">);</span>
-<a name="line-257"></a>
-<a name="line-258"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Listing&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">lat1</span> <span class="o">&lt;&lt;</span> <span class="n">lat2</span> <span class="o">&lt;&lt;</span> <span class="n">lng1</span> <span class="o">&lt;&lt;</span> <span class="n">lng2</span><span class="p">;</span>
-<a name="line-259"></a>
-<a name="line-260"></a> <span class="n">GPSDBJobInfo</span> <span class="n">jobInfo</span><span class="p">;</span>
-<a name="line-261"></a> <span class="n">jobInfo</span><span class="p">.</span><span class="n">setLat1</span><span class="p">(</span><span class="n">lat1</span><span class="p">);</span>
-<a name="line-262"></a> <span class="n">jobInfo</span><span class="p">.</span><span class="n">setLat2</span><span class="p">(</span><span class="n">lat2</span><span class="p">);</span>
-<a name="line-263"></a> <span class="n">jobInfo</span><span class="p">.</span><span class="n">setLng1</span><span class="p">(</span><span class="n">lng1</span><span class="p">);</span>
-<a name="line-264"></a> <span class="n">jobInfo</span><span class="p">.</span><span class="n">setLng2</span><span class="p">(</span><span class="n">lng2</span><span class="p">);</span>
-<a name="line-265"></a>
-<a name="line-266"></a> <span class="n">GPSDBJobsThread</span> <span class="o">*</span><span class="k">const</span> <span class="n">currentJob</span> <span class="o">=</span> <span class="n">DBJobsManager</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">startGPSJobThread</span><span class="p">(</span><span class="n">jobInfo</span><span class="p">);</span>
-<a name="line-267"></a>
-<a name="line-268"></a> <span class="n">Private</span><span class="o">::</span><span class="n">InternalJobs</span> <span class="n">currentJobInfo</span><span class="p">;</span>
-<a name="line-269"></a>
-<a name="line-270"></a> <span class="n">currentJobInfo</span><span class="p">.</span><span class="n">jobThread</span> <span class="o">=</span> <span class="n">currentJob</span><span class="p">;</span>
-<a name="line-271"></a> <span class="n">currentJobInfo</span><span class="p">.</span><span class="n">level</span> <span class="o">=</span> <span class="n">level</span><span class="p">;</span>
-<a name="line-272"></a>
-<a name="line-273"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentJobInfo</span><span class="p">);</span>
-<a name="line-274"></a>
-<a name="line-275"></a> <span class="n">connect</span><span class="p">(</span><span class="n">currentJob</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">finished</span><span class="p">()),</span>
-<a name="line-276"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotMapImagesJobResult</span><span class="p">()));</span>
-<a name="line-277"></a>
-<a name="line-278"></a> <span class="n">connect</span><span class="p">(</span><span class="n">currentJob</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">data</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">ItemListerRecord</span><span class="o">&gt;</span><span class="p">)),</span>
-<a name="line-279"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotMapImagesJobData</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">ItemListerRecord</span><span class="o">&gt;</span><span class="p">)));</span>
-<a name="line-280"></a><span class="p">}</span>
-<a name="line-281"></a>
-<a name="line-282"></a><span class="cm">/**</span>
-<a name="line-283"></a><span class="cm"> * @brief Returns a pointer to a tile.</span>
-<a name="line-284"></a><span class="cm"> * @param tileIndex The index of a tile.</span>
-<a name="line-285"></a><span class="cm"> * @param stopIfEmpty Determines whether child tiles are also created for empty tiles.</span>
-<a name="line-286"></a><span class="cm"> */</span>
-<a name="line-287"></a><span class="n">AbstractMarkerTiler</span><span class="o">::</span><span class="n">Tile</span><span class="o">*</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">getTile</span><span class="p">(</span><span class="k">const</span> <span class="n">TileIndex</span><span class="o">&amp;</span> <span class="n">tileIndex</span><span class="p">,</span> <span class="k">const</span> <span class="kt">bool</span> <span class="n">stopIfEmpty</span><span class="p">)</span>
-<a name="line-288"></a><span class="p">{</span>
-<a name="line-289"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">tileIndex</span><span class="p">.</span><span class="n">level</span><span class="p">()</span> <span class="o">&lt;=</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">MaxLevel</span><span class="p">);</span>
-<a name="line-290"></a>
-<a name="line-291"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="n">tile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">rootTile</span><span class="p">());</span>
-<a name="line-292"></a>
-<a name="line-293"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">level</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">level</span> <span class="o">&lt;</span> <span class="n">tileIndex</span><span class="p">.</span><span class="n">indexCount</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">level</span><span class="p">)</span>
-<a name="line-294"></a> <span class="p">{</span>
-<a name="line-295"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">tileIndex</span><span class="p">.</span><span class="n">linearIndex</span><span class="p">(</span><span class="n">level</span><span class="p">);</span>
-<a name="line-296"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="n">childTile</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-297"></a>
-<a name="line-298"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tile</span><span class="o">-&gt;</span><span class="n">childrenEmpty</span><span class="p">())</span>
-<a name="line-299"></a> <span class="p">{</span>
-<a name="line-300"></a> <span class="k">if</span> <span class="p">(</span><span class="n">stopIfEmpty</span><span class="p">)</span>
-<a name="line-301"></a> <span class="p">{</span>
-<a name="line-302"></a> <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-303"></a> <span class="p">}</span>
-<a name="line-304"></a>
-<a name="line-305"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">tile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-306"></a> <span class="p">{</span>
-<a name="line-307"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">currentImageId</span> <span class="o">=</span> <span class="n">tile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
-<a name="line-308"></a> <span class="k">const</span> <span class="n">GPSItemInfo</span> <span class="n">currentItemInfo</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">[</span><span class="n">currentImageId</span><span class="p">];</span>
-<a name="line-309"></a> <span class="k">const</span> <span class="n">TileIndex</span> <span class="n">markerTileIndex</span> <span class="o">=</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">fromCoordinates</span><span class="p">(</span><span class="n">currentItemInfo</span><span class="p">.</span><span class="n">coordinates</span><span class="p">,</span> <span class="n">level</span><span class="p">);</span>
-<a name="line-310"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">newTileIndex</span> <span class="o">=</span> <span class="n">markerTileIndex</span><span class="p">.</span><span class="n">lastIndex</span><span class="p">();</span>
-<a name="line-311"></a><span class="hll"> <span class="n">MyTile</span><span class="o">*</span> <span class="k">const</span> <span class="n">newTile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">tile</span><span class="o">-&gt;</span><span class="n">getChild</span><span class="p">(</span><span class="n">newTileIndex</span><span class="p">));</span><span class='error2'>&lt;--- Shadowed declaration</span>
-</span><a name="line-312"></a>
-<a name="line-313"></a> <span class="k">if</span> <span class="p">(</span><span class="n">newTile</span> <span class="o">==</span> <span class="k">nullptr</span><span class="p">)</span>
-<a name="line-314"></a> <span class="p">{</span>
-<a name="line-315"></a><span class="hll"> <span class="n">MyTile</span><span class="o">*</span> <span class="k">const</span> <span class="n">newTile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">tileNew</span><span class="p">());</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-316"></a> <span class="n">newTile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentImageId</span><span class="p">);</span>
-<a name="line-317"></a> <span class="n">tile</span><span class="o">-&gt;</span><span class="n">addChild</span><span class="p">(</span><span class="n">newTileIndex</span><span class="p">,</span> <span class="n">newTile</span><span class="p">);</span>
-<a name="line-318"></a> <span class="p">}</span>
-<a name="line-319"></a> <span class="k">else</span>
-<a name="line-320"></a> <span class="p">{</span>
-<a name="line-321"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">newTile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">currentImageId</span><span class="p">))</span>
-<a name="line-322"></a> <span class="p">{</span>
-<a name="line-323"></a> <span class="n">newTile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">currentImageId</span><span class="p">);</span>
-<a name="line-324"></a> <span class="p">}</span>
-<a name="line-325"></a> <span class="p">}</span>
-<a name="line-326"></a> <span class="p">}</span>
-<a name="line-327"></a> <span class="p">}</span>
-<a name="line-328"></a>
-<a name="line-329"></a> <span class="n">childTile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">tile</span><span class="o">-&gt;</span><span class="n">getChild</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">));</span>
-<a name="line-330"></a>
-<a name="line-331"></a> <span class="k">if</span> <span class="p">(</span><span class="n">childTile</span> <span class="o">==</span> <span class="k">nullptr</span><span class="p">)</span>
-<a name="line-332"></a> <span class="p">{</span>
-<a name="line-333"></a> <span class="k">if</span> <span class="p">(</span><span class="n">stopIfEmpty</span><span class="p">)</span>
-<a name="line-334"></a> <span class="p">{</span>
-<a name="line-335"></a> <span class="c1">// there will be no markers in this tile, therefore stop</span>
-<a name="line-336"></a>
-<a name="line-337"></a> <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-338"></a> <span class="p">}</span>
-<a name="line-339"></a>
-<a name="line-340"></a> <span class="n">childTile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">tileNew</span><span class="p">());</span>
-<a name="line-341"></a> <span class="n">tile</span><span class="o">-&gt;</span><span class="n">addChild</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">,</span> <span class="n">childTile</span><span class="p">);</span>
-<a name="line-342"></a> <span class="p">}</span>
-<a name="line-343"></a>
-<a name="line-344"></a> <span class="n">tile</span> <span class="o">=</span> <span class="n">childTile</span><span class="p">;</span>
-<a name="line-345"></a> <span class="p">}</span>
-<a name="line-346"></a>
-<a name="line-347"></a> <span class="k">return</span> <span class="n">tile</span><span class="p">;</span>
-<a name="line-348"></a><span class="p">}</span>
-<a name="line-349"></a>
-<a name="line-350"></a><span class="kt">int</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">getTileMarkerCount</span><span class="p">(</span><span class="k">const</span> <span class="n">TileIndex</span><span class="o">&amp;</span> <span class="n">tileIndex</span><span class="p">)</span>
-<a name="line-351"></a><span class="p">{</span>
-<a name="line-352"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="k">const</span> <span class="n">tile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">getTile</span><span class="p">(</span><span class="n">tileIndex</span><span class="p">));</span>
-<a name="line-353"></a>
-<a name="line-354"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tile</span><span class="p">)</span>
-<a name="line-355"></a> <span class="p">{</span>
-<a name="line-356"></a> <span class="k">return</span> <span class="n">tile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">count</span><span class="p">();</span>
-<a name="line-357"></a> <span class="p">}</span>
-<a name="line-358"></a>
-<a name="line-359"></a> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-360"></a><span class="p">}</span>
-<a name="line-361"></a>
-<a name="line-362"></a><span class="kt">int</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">getTileSelectedCount</span><span class="p">(</span><span class="k">const</span> <span class="n">TileIndex</span><span class="o">&amp;</span> <span class="n">tileIndex</span><span class="p">)</span>
-<a name="line-363"></a><span class="p">{</span>
-<a name="line-364"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">tileIndex</span><span class="p">)</span>
-<a name="line-365"></a>
-<a name="line-366"></a> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-367"></a><span class="p">}</span>
-<a name="line-368"></a>
-<a name="line-369"></a><span class="cm">/**</span>
-<a name="line-370"></a><span class="cm"> * @brief This function finds the best representative marker from a tile of markers.</span>
-<a name="line-371"></a><span class="cm"> * @param tileIndex Index of the tile from which the best marker should be found.</span>
-<a name="line-372"></a><span class="cm"> * @param sortKey Sets the criteria for selecting the representative thumbnail, a combination of the SortOptions bits.</span>
-<a name="line-373"></a><span class="cm"> * @return Returns the internally used index of the marker.</span>
-<a name="line-374"></a><span class="cm"> */</span>
-<a name="line-375"></a><span class="n">QVariant</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">getTileRepresentativeMarker</span><span class="p">(</span><span class="k">const</span> <span class="n">TileIndex</span><span class="o">&amp;</span> <span class="n">tileIndex</span><span class="p">,</span> <span class="k">const</span> <span class="kt">int</span> <span class="n">sortKey</span><span class="p">)</span>
-<a name="line-376"></a><span class="p">{</span>
-<a name="line-377"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="k">const</span> <span class="n">tile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">getTile</span><span class="p">(</span><span class="n">tileIndex</span><span class="p">,</span> <span class="nb">true</span><span class="p">));</span>
-<a name="line-378"></a>
-<a name="line-379"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">tile</span><span class="p">)</span>
-<a name="line-380"></a> <span class="p">{</span>
-<a name="line-381"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="p">();</span>
-<a name="line-382"></a> <span class="p">}</span>
-<a name="line-383"></a>
-<a name="line-384"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-385"></a> <span class="p">{</span>
-<a name="line-386"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="p">();</span>
-<a name="line-387"></a> <span class="p">}</span>
-<a name="line-388"></a>
-<a name="line-389"></a> <span class="n">GPSItemInfo</span> <span class="n">bestMarkerInfo</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">tile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">first</span><span class="p">());</span>
-<a name="line-390"></a> <span class="n">GeoGroupState</span> <span class="n">bestMarkerGroupState</span> <span class="o">=</span> <span class="n">getImageState</span><span class="p">(</span><span class="n">bestMarkerInfo</span><span class="p">.</span><span class="n">id</span><span class="p">);</span>
-<a name="line-391"></a>
-<a name="line-392"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">1</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">tile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-393"></a> <span class="p">{</span>
-<a name="line-394"></a> <span class="k">const</span> <span class="n">GPSItemInfo</span> <span class="n">currentMarkerInfo</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">tile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">));</span>
-<a name="line-395"></a> <span class="k">const</span> <span class="n">GeoGroupState</span> <span class="n">currentMarkerGroupState</span> <span class="o">=</span> <span class="n">getImageState</span><span class="p">(</span><span class="n">currentMarkerInfo</span><span class="p">.</span><span class="n">id</span><span class="p">);</span>
-<a name="line-396"></a>
-<a name="line-397"></a> <span class="k">if</span> <span class="p">(</span><span class="n">GPSItemInfoSorter</span><span class="o">::</span><span class="n">fitsBetter</span><span class="p">(</span><span class="n">bestMarkerInfo</span><span class="p">,</span>
-<a name="line-398"></a> <span class="n">bestMarkerGroupState</span><span class="p">,</span>
-<a name="line-399"></a> <span class="n">currentMarkerInfo</span><span class="p">,</span>
-<a name="line-400"></a> <span class="n">currentMarkerGroupState</span><span class="p">,</span>
-<a name="line-401"></a> <span class="n">getGlobalGroupState</span><span class="p">(),</span>
-<a name="line-402"></a> <span class="n">GPSItemInfoSorter</span><span class="o">::</span><span class="n">SortOptions</span><span class="p">(</span><span class="n">sortKey</span><span class="p">)))</span>
-<a name="line-403"></a> <span class="p">{</span>
-<a name="line-404"></a> <span class="n">bestMarkerInfo</span> <span class="o">=</span> <span class="n">currentMarkerInfo</span><span class="p">;</span>
-<a name="line-405"></a> <span class="n">bestMarkerGroupState</span> <span class="o">=</span> <span class="n">currentMarkerGroupState</span><span class="p">;</span>
-<a name="line-406"></a> <span class="p">}</span>
-<a name="line-407"></a> <span class="p">}</span>
-<a name="line-408"></a>
-<a name="line-409"></a> <span class="k">const</span> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">returnedMarker</span><span class="p">(</span><span class="n">tileIndex</span><span class="p">,</span> <span class="n">bestMarkerInfo</span><span class="p">.</span><span class="n">id</span><span class="p">);</span>
-<a name="line-410"></a>
-<a name="line-411"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="o">::</span><span class="n">fromValue</span><span class="p">(</span><span class="n">returnedMarker</span><span class="p">);</span>
-<a name="line-412"></a><span class="p">}</span>
-<a name="line-413"></a>
-<a name="line-414"></a><span class="cm">/**</span>
-<a name="line-415"></a><span class="cm"> * @brief This function finds the best representative marker from a group of markers. This is needed to display a thumbnail for a marker group.</span>
-<a name="line-416"></a><span class="cm"> * @param indices A list containing markers, obtained by getTileRepresentativeMarker.</span>
-<a name="line-417"></a><span class="cm"> * @param sortKey Sets the criteria for selecting the representative thumbnail, a combination of the SortOptions bits.</span>
-<a name="line-418"></a><span class="cm"> * @return Returns the internally used index of the marker.</span>
-<a name="line-419"></a><span class="cm"> */</span>
-<a name="line-420"></a><span class="n">QVariant</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">bestRepresentativeIndexFromList</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QVariant</span><span class="o">&gt;&amp;</span> <span class="n">indices</span><span class="p">,</span> <span class="k">const</span> <span class="kt">int</span> <span class="n">sortKey</span><span class="p">)</span>
-<a name="line-421"></a><span class="p">{</span>
-<a name="line-422"></a> <span class="k">if</span> <span class="p">(</span><span class="n">indices</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-423"></a> <span class="p">{</span>
-<a name="line-424"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="p">();</span>
-<a name="line-425"></a> <span class="p">}</span>
-<a name="line-426"></a>
-<a name="line-427"></a> <span class="k">const</span> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">firstIndex</span> <span class="o">=</span> <span class="n">indices</span><span class="p">.</span><span class="n">first</span><span class="p">().</span><span class="n">value</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">();</span>
-<a name="line-428"></a> <span class="n">GPSItemInfo</span> <span class="n">bestMarkerInfo</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">firstIndex</span><span class="p">.</span><span class="n">second</span><span class="p">);</span>
-<a name="line-429"></a> <span class="n">GeoGroupState</span> <span class="n">bestMarkerGroupState</span> <span class="o">=</span> <span class="n">getImageState</span><span class="p">(</span><span class="n">firstIndex</span><span class="p">.</span><span class="n">second</span><span class="p">);</span>
-<a name="line-430"></a> <span class="n">TileIndex</span> <span class="n">bestMarkerTileIndex</span> <span class="o">=</span> <span class="n">firstIndex</span><span class="p">.</span><span class="n">first</span><span class="p">;</span>
-<a name="line-431"></a>
-<a name="line-432"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">1</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">indices</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-433"></a> <span class="p">{</span>
-<a name="line-434"></a> <span class="k">const</span> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">indices</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">value</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">();</span>
-<a name="line-435"></a>
-<a name="line-436"></a> <span class="n">GPSItemInfo</span> <span class="n">currentMarkerInfo</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">.</span><span class="n">second</span><span class="p">);</span>
-<a name="line-437"></a> <span class="n">GeoGroupState</span> <span class="n">currentMarkerGroupState</span> <span class="o">=</span> <span class="n">getImageState</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">.</span><span class="n">second</span><span class="p">);</span>
-<a name="line-438"></a>
-<a name="line-439"></a> <span class="k">if</span> <span class="p">(</span><span class="n">GPSItemInfoSorter</span><span class="o">::</span><span class="n">fitsBetter</span><span class="p">(</span><span class="n">bestMarkerInfo</span><span class="p">,</span>
-<a name="line-440"></a> <span class="n">bestMarkerGroupState</span><span class="p">,</span>
-<a name="line-441"></a> <span class="n">currentMarkerInfo</span><span class="p">,</span>
-<a name="line-442"></a> <span class="n">currentMarkerGroupState</span><span class="p">,</span>
-<a name="line-443"></a> <span class="n">getGlobalGroupState</span><span class="p">(),</span>
-<a name="line-444"></a> <span class="n">GPSItemInfoSorter</span><span class="o">::</span><span class="n">SortOptions</span><span class="p">(</span><span class="n">sortKey</span><span class="p">)))</span>
-<a name="line-445"></a> <span class="p">{</span>
-<a name="line-446"></a> <span class="n">bestMarkerInfo</span> <span class="o">=</span> <span class="n">currentMarkerInfo</span><span class="p">;</span>
-<a name="line-447"></a> <span class="n">bestMarkerGroupState</span> <span class="o">=</span> <span class="n">currentMarkerGroupState</span><span class="p">;</span>
-<a name="line-448"></a> <span class="n">bestMarkerTileIndex</span> <span class="o">=</span> <span class="n">currentIndex</span><span class="p">.</span><span class="n">first</span><span class="p">;</span>
-<a name="line-449"></a> <span class="p">}</span>
-<a name="line-450"></a> <span class="p">}</span>
-<a name="line-451"></a>
-<a name="line-452"></a> <span class="k">const</span> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">returnedMarker</span><span class="p">(</span><span class="n">bestMarkerTileIndex</span><span class="p">,</span> <span class="n">bestMarkerInfo</span><span class="p">.</span><span class="n">id</span><span class="p">);</span>
-<a name="line-453"></a>
-<a name="line-454"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="o">::</span><span class="n">fromValue</span><span class="p">(</span><span class="n">returnedMarker</span><span class="p">);</span>
-<a name="line-455"></a><span class="p">}</span>
-<a name="line-456"></a>
-<a name="line-457"></a><span class="cm">/**</span>
-<a name="line-458"></a><span class="cm"> * @brief This function retrieves the thumbnail for an index.</span>
-<a name="line-459"></a><span class="cm"> * @param index The marker&#39;s index.</span>
-<a name="line-460"></a><span class="cm"> * @param size The size of the thumbnail.</span>
-<a name="line-461"></a><span class="cm"> * @return If the thumbnail has been loaded in the ThumbnailLoadThread instance, it is returned.</span>
-<a name="line-462"></a><span class="cm"> * If not, a QPixmap is returned and ThumbnailLoadThread&#39;s signal named signalThumbnailLoaded is emitted when the thumbnail becomes available.</span>
-<a name="line-463"></a><span class="cm"> */</span>
-<a name="line-464"></a><span class="n">QPixmap</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">pixmapFromRepresentativeIndex</span><span class="p">(</span><span class="k">const</span> <span class="n">QVariant</span><span class="o">&amp;</span> <span class="n">index</span><span class="p">,</span> <span class="k">const</span> <span class="n">QSize</span><span class="o">&amp;</span> <span class="n">size</span><span class="p">)</span>
-<a name="line-465"></a><span class="p">{</span>
-<a name="line-466"></a> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">indexForPixmap</span> <span class="o">=</span> <span class="n">index</span><span class="p">.</span><span class="n">value</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">();</span>
-<a name="line-467"></a>
-<a name="line-468"></a> <span class="n">QPixmap</span> <span class="n">thumbnail</span><span class="p">;</span>
-<a name="line-469"></a> <span class="n">ItemInfo</span> <span class="nf">info</span><span class="p">(</span><span class="n">indexForPixmap</span><span class="p">.</span><span class="n">second</span><span class="p">);</span>
-<a name="line-470"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">thumbnailMap</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">id</span><span class="p">(),</span> <span class="n">index</span><span class="p">);</span>
-<a name="line-471"></a>
-<a name="line-472"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">thumbnailLoadThread</span><span class="o">-&gt;</span><span class="n">find</span><span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">thumbnailIdentifier</span><span class="p">(),</span> <span class="n">thumbnail</span><span class="p">,</span> <span class="n">qMax</span><span class="p">(</span><span class="n">size</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">+</span> <span class="mi">2</span><span class="p">,</span> <span class="n">size</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">+</span> <span class="mi">2</span><span class="p">)))</span>
-<a name="line-473"></a> <span class="p">{</span>
-<a name="line-474"></a> <span class="c1">// digikam returns thumbnails with a border around them,</span>
-<a name="line-475"></a> <span class="c1">// but geolocation interface expects them without a border</span>
-<a name="line-476"></a>
-<a name="line-477"></a> <span class="k">return</span> <span class="n">thumbnail</span><span class="p">.</span><span class="n">copy</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">thumbnail</span><span class="p">.</span><span class="n">size</span><span class="p">().</span><span class="n">width</span><span class="p">()</span> <span class="o">-</span> <span class="mi">2</span><span class="p">,</span> <span class="n">thumbnail</span><span class="p">.</span><span class="n">size</span><span class="p">().</span><span class="n">height</span><span class="p">()</span> <span class="o">-</span> <span class="mi">2</span><span class="p">);</span>
-<a name="line-478"></a> <span class="p">}</span>
-<a name="line-479"></a> <span class="k">else</span>
-<a name="line-480"></a> <span class="p">{</span>
-<a name="line-481"></a> <span class="k">return</span> <span class="n">QPixmap</span><span class="p">();</span>
-<a name="line-482"></a> <span class="p">}</span>
-<a name="line-483"></a><span class="p">}</span>
-<a name="line-484"></a>
-<a name="line-485"></a><span class="cm">/**</span>
-<a name="line-486"></a><span class="cm"> * @brief This function compares two marker indices.</span>
-<a name="line-487"></a><span class="cm"> */</span>
-<a name="line-488"></a><span class="kt">bool</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">indicesEqual</span><span class="p">(</span><span class="k">const</span> <span class="n">QVariant</span><span class="o">&amp;</span> <span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">QVariant</span><span class="o">&amp;</span> <span class="n">b</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-489"></a><span class="p">{</span>
-<a name="line-490"></a> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">firstIndex</span> <span class="o">=</span> <span class="n">a</span><span class="p">.</span><span class="n">value</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">();</span>
-<a name="line-491"></a> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">secondIndex</span> <span class="o">=</span> <span class="n">b</span><span class="p">.</span><span class="n">value</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">();</span>
-<a name="line-492"></a>
-<a name="line-493"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">aIndicesList</span> <span class="o">=</span> <span class="n">firstIndex</span><span class="p">.</span><span class="n">first</span><span class="p">.</span><span class="n">toIntList</span><span class="p">();</span>
-<a name="line-494"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">bIndicesList</span> <span class="o">=</span> <span class="n">secondIndex</span><span class="p">.</span><span class="n">first</span><span class="p">.</span><span class="n">toIntList</span><span class="p">();</span>
-<a name="line-495"></a>
-<a name="line-496"></a> <span class="k">if</span> <span class="p">((</span><span class="n">firstIndex</span><span class="p">.</span><span class="n">second</span> <span class="o">==</span> <span class="n">secondIndex</span><span class="p">.</span><span class="n">second</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">aIndicesList</span> <span class="o">==</span> <span class="n">bIndicesList</span><span class="p">))</span>
-<a name="line-497"></a> <span class="p">{</span>
-<a name="line-498"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-499"></a> <span class="p">}</span>
-<a name="line-500"></a>
-<a name="line-501"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-502"></a><span class="p">}</span>
-<a name="line-503"></a>
-<a name="line-504"></a><span class="n">GeoGroupState</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">getTileGroupState</span><span class="p">(</span><span class="k">const</span> <span class="n">TileIndex</span><span class="o">&amp;</span> <span class="n">tileIndex</span><span class="p">)</span>
-<a name="line-505"></a><span class="p">{</span>
-<a name="line-506"></a> <span class="k">const</span> <span class="kt">bool</span> <span class="n">haveGlobalSelection</span> <span class="o">=</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mapGlobalGroupState</span> <span class="o">&amp;</span> <span class="p">(</span><span class="n">FilteredPositiveMask</span> <span class="o">|</span> <span class="n">RegionSelectedMask</span><span class="p">));</span>
-<a name="line-507"></a>
-<a name="line-508"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">haveGlobalSelection</span><span class="p">)</span>
-<a name="line-509"></a> <span class="p">{</span>
-<a name="line-510"></a> <span class="k">return</span> <span class="n">SelectedNone</span><span class="p">;</span>
-<a name="line-511"></a> <span class="p">}</span>
-<a name="line-512"></a>
-<a name="line-513"></a> <span class="c1">/// @todo Store this state in the tiles!</span>
-<a name="line-514"></a>
-<a name="line-515"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="k">const</span> <span class="n">tile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">getTile</span><span class="p">(</span><span class="n">tileIndex</span><span class="p">,</span> <span class="nb">true</span><span class="p">));</span>
-<a name="line-516"></a> <span class="n">GroupStateComputer</span> <span class="n">tileStateComputer</span><span class="p">;</span>
-<a name="line-517"></a>
-<a name="line-518"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">tile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-519"></a> <span class="p">{</span>
-<a name="line-520"></a> <span class="k">const</span> <span class="n">GeoGroupState</span> <span class="n">imageState</span> <span class="o">=</span> <span class="n">getImageState</span><span class="p">(</span><span class="n">tile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">));</span>
-<a name="line-521"></a>
-<a name="line-522"></a> <span class="n">tileStateComputer</span><span class="p">.</span><span class="n">addState</span><span class="p">(</span><span class="n">imageState</span><span class="p">);</span>
-<a name="line-523"></a> <span class="p">}</span>
-<a name="line-524"></a>
-<a name="line-525"></a> <span class="k">return</span> <span class="n">tileStateComputer</span><span class="p">.</span><span class="n">getState</span><span class="p">();</span>
-<a name="line-526"></a><span class="p">}</span>
-<a name="line-527"></a>
-<a name="line-528"></a><span class="cm">/**</span>
-<a name="line-529"></a><span class="cm"> * @brief The marker data is returned from the database in batches. This function takes and unites the batches.</span>
-<a name="line-530"></a><span class="cm"> */</span>
-<a name="line-531"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">slotMapImagesJobData</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">ItemListerRecord</span><span class="o">&gt;&amp;</span> <span class="n">records</span><span class="p">)</span>
-<a name="line-532"></a><span class="p">{</span>
-<a name="line-533"></a> <span class="k">if</span> <span class="p">(</span><span class="n">records</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-534"></a> <span class="p">{</span>
-<a name="line-535"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-536"></a> <span class="p">}</span>
-<a name="line-537"></a>
-<a name="line-538"></a> <span class="n">Private</span><span class="o">::</span><span class="n">InternalJobs</span><span class="o">*</span> <span class="n">internalJob</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-539"></a>
-<a name="line-540"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-541"></a> <span class="p">{</span>
-<a name="line-542"></a> <span class="k">if</span> <span class="p">(</span><span class="n">sender</span><span class="p">()</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">jobThread</span><span class="p">)</span>
-<a name="line-543"></a> <span class="p">{</span>
-<a name="line-544"></a> <span class="c1">/// @todo Is this really safe?</span>
-<a name="line-545"></a>
-<a name="line-546"></a> <span class="n">internalJob</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
-<a name="line-547"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-548"></a> <span class="p">}</span>
-<a name="line-549"></a> <span class="p">}</span>
-<a name="line-550"></a>
-<a name="line-551"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">internalJob</span><span class="p">)</span>
-<a name="line-552"></a> <span class="p">{</span>
-<a name="line-553"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-554"></a> <span class="p">}</span>
-<a name="line-555"></a>
-<a name="line-556"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">ItemListerRecord</span> <span class="o">&amp;</span><span class="n">record</span><span class="p">,</span> <span class="n">records</span><span class="p">)</span>
-<a name="line-557"></a> <span class="p">{</span>
-<a name="line-558"></a> <span class="k">if</span> <span class="p">(</span><span class="n">record</span><span class="p">.</span><span class="n">extraValues</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span>
-<a name="line-559"></a> <span class="p">{</span>
-<a name="line-560"></a> <span class="c1">// skip info without coordinates</span>
-<a name="line-561"></a>
-<a name="line-562"></a> <span class="k">continue</span><span class="p">;</span>
-<a name="line-563"></a> <span class="p">}</span>
-<a name="line-564"></a>
-<a name="line-565"></a> <span class="n">GPSItemInfo</span> <span class="n">entry</span><span class="p">;</span>
-<a name="line-566"></a>
-<a name="line-567"></a> <span class="n">entry</span><span class="p">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">record</span><span class="p">.</span><span class="n">imageID</span><span class="p">;</span>
-<a name="line-568"></a> <span class="n">entry</span><span class="p">.</span><span class="n">rating</span> <span class="o">=</span> <span class="n">record</span><span class="p">.</span><span class="n">rating</span><span class="p">;</span>
-<a name="line-569"></a> <span class="n">entry</span><span class="p">.</span><span class="n">dateTime</span> <span class="o">=</span> <span class="n">record</span><span class="p">.</span><span class="n">creationDate</span><span class="p">;</span>
-<a name="line-570"></a> <span class="n">entry</span><span class="p">.</span><span class="n">coordinates</span><span class="p">.</span><span class="n">setLatLon</span><span class="p">(</span><span class="n">record</span><span class="p">.</span><span class="n">extraValues</span><span class="p">.</span><span class="n">first</span><span class="p">().</span><span class="n">toDouble</span><span class="p">(),</span> <span class="n">record</span><span class="p">.</span><span class="n">extraValues</span><span class="p">.</span><span class="n">last</span><span class="p">().</span><span class="n">toDouble</span><span class="p">());</span>
-<a name="line-571"></a>
-<a name="line-572"></a> <span class="n">internalJob</span><span class="o">-&gt;</span><span class="n">dataFromDatabase</span> <span class="o">&lt;&lt;</span> <span class="n">entry</span><span class="p">;</span>
-<a name="line-573"></a> <span class="p">}</span>
-<a name="line-574"></a><span class="p">}</span>
-<a name="line-575"></a>
-<a name="line-576"></a><span class="cm">/**</span>
-<a name="line-577"></a><span class="cm"> * @brief Now, all the marker data has been retrieved from the database. Here, the markers are sorted into tiles.</span>
-<a name="line-578"></a><span class="cm"> */</span>
-<a name="line-579"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">slotMapImagesJobResult</span><span class="p">()</span>
-<a name="line-580"></a><span class="p">{</span>
-<a name="line-581"></a> <span class="kt">int</span> <span class="n">foundIndex</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
-<a name="line-582"></a>
-<a name="line-583"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-584"></a> <span class="p">{</span>
-<a name="line-585"></a> <span class="k">if</span> <span class="p">(</span><span class="n">sender</span><span class="p">()</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">jobThread</span><span class="p">)</span>
-<a name="line-586"></a> <span class="p">{</span>
-<a name="line-587"></a> <span class="n">foundIndex</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
-<a name="line-588"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-589"></a> <span class="p">}</span>
-<a name="line-590"></a> <span class="p">}</span>
-<a name="line-591"></a>
-<a name="line-592"></a> <span class="k">if</span> <span class="p">(</span><span class="n">foundIndex</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-593"></a> <span class="p">{</span>
-<a name="line-594"></a> <span class="c1">// this should not happen, but ok...</span>
-<a name="line-595"></a>
-<a name="line-596"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-597"></a> <span class="p">}</span>
-<a name="line-598"></a>
-<a name="line-599"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">foundIndex</span><span class="p">).</span><span class="n">jobThread</span><span class="o">-&gt;</span><span class="n">hasErrors</span><span class="p">())</span>
-<a name="line-600"></a> <span class="p">{</span>
-<a name="line-601"></a> <span class="k">const</span> <span class="n">QString</span> <span class="o">&amp;</span><span class="n">err</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">foundIndex</span><span class="p">).</span><span class="n">jobThread</span><span class="o">-&gt;</span><span class="n">errorsList</span><span class="p">().</span><span class="n">first</span><span class="p">();</span>
-<a name="line-602"></a>
-<a name="line-603"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_GENERAL_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Failed to list images in selected area: &quot;</span>
-<a name="line-604"></a> <span class="o">&lt;&lt;</span> <span class="n">err</span><span class="p">;</span>
-<a name="line-605"></a>
-<a name="line-606"></a> <span class="c1">// Pop-up a message about the error.</span>
-<a name="line-607"></a>
-<a name="line-608"></a> <span class="n">DNotificationWrapper</span><span class="p">(</span><span class="n">QString</span><span class="p">(),</span> <span class="n">err</span><span class="p">,</span>
-<a name="line-609"></a> <span class="n">DigikamApp</span><span class="o">::</span><span class="n">instance</span><span class="p">(),</span> <span class="n">DigikamApp</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">windowTitle</span><span class="p">());</span>
-<a name="line-610"></a> <span class="p">}</span>
-<a name="line-611"></a>
-<a name="line-612"></a> <span class="c1">// get the results from the job:</span>
-<a name="line-613"></a>
-<a name="line-614"></a> <span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">GPSItemInfo</span><span class="o">&gt;</span> <span class="n">returnedItemInfo</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">foundIndex</span><span class="p">).</span><span class="n">dataFromDatabase</span><span class="p">;</span>
-<a name="line-615"></a>
-<a name="line-616"></a> <span class="c1">/// @todo Currently, we ignore the wanted level and just add the images</span>
-<a name="line-617"></a><span class="cm">/*</span>
-<a name="line-618"></a><span class="cm"> const int wantedLevel = d-&gt;jobs.at(foundIndex).level;</span>
-<a name="line-619"></a><span class="cm">*/</span>
-<a name="line-620"></a> <span class="c1">// remove the finished job</span>
-<a name="line-621"></a>
-<a name="line-622"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">[</span><span class="n">foundIndex</span><span class="p">].</span><span class="n">jobThread</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">();</span>
-<a name="line-623"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">[</span><span class="n">foundIndex</span><span class="p">].</span><span class="n">jobThread</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-624"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">jobs</span><span class="p">.</span><span class="n">removeAt</span><span class="p">(</span><span class="n">foundIndex</span><span class="p">);</span>
-<a name="line-625"></a>
-<a name="line-626"></a> <span class="k">if</span> <span class="p">(</span><span class="n">returnedItemInfo</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-627"></a> <span class="p">{</span>
-<a name="line-628"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-629"></a> <span class="p">}</span>
-<a name="line-630"></a>
-<a name="line-631"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">returnedItemInfo</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-632"></a> <span class="p">{</span>
-<a name="line-633"></a> <span class="k">const</span> <span class="n">GPSItemInfo</span> <span class="n">currentItemInfo</span> <span class="o">=</span> <span class="n">returnedItemInfo</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
-<a name="line-634"></a>
-<a name="line-635"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">currentItemInfo</span><span class="p">.</span><span class="n">coordinates</span><span class="p">.</span><span class="n">hasCoordinates</span><span class="p">())</span>
-<a name="line-636"></a> <span class="p">{</span>
-<a name="line-637"></a> <span class="k">continue</span><span class="p">;</span>
-<a name="line-638"></a> <span class="p">}</span>
-<a name="line-639"></a>
-<a name="line-640"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">currentItemInfo</span><span class="p">.</span><span class="n">id</span><span class="p">,</span> <span class="n">currentItemInfo</span><span class="p">);</span>
-<a name="line-641"></a>
-<a name="line-642"></a> <span class="k">const</span> <span class="n">TileIndex</span> <span class="n">markerTileIndex</span> <span class="o">=</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">fromCoordinates</span><span class="p">(</span><span class="n">currentItemInfo</span><span class="p">.</span><span class="n">coordinates</span><span class="p">,</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">MaxLevel</span><span class="p">);</span>
-<a name="line-643"></a> <span class="n">addMarkerToTileAndChildren</span><span class="p">(</span><span class="n">currentItemInfo</span><span class="p">.</span><span class="n">id</span><span class="p">,</span> <span class="n">markerTileIndex</span><span class="p">,</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">rootTile</span><span class="p">()),</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-644"></a> <span class="p">}</span>
-<a name="line-645"></a>
-<a name="line-646"></a> <span class="n">emit</span> <span class="n">signalTilesOrSelectionChanged</span><span class="p">();</span>
-<a name="line-647"></a><span class="p">}</span>
-<a name="line-648"></a>
-<a name="line-649"></a><span class="cm">/**</span>
-<a name="line-650"></a><span class="cm"> * @brief Because of a call to pixmapFromRepresentativeIndex, some thumbnails are not yet loaded at the time of requesting.</span>
-<a name="line-651"></a><span class="cm"> * When each thumbnail loads, this slot is called and emits a signal that announces the map that the thumbnail is available.</span>
-<a name="line-652"></a><span class="cm"> */</span>
-<a name="line-653"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">slotThumbnailLoaded</span><span class="p">(</span><span class="k">const</span> <span class="n">LoadingDescription</span><span class="o">&amp;</span> <span class="n">loadingDescription</span><span class="p">,</span> <span class="k">const</span> <span class="n">QPixmap</span><span class="o">&amp;</span> <span class="n">thumbnail</span><span class="p">)</span>
-<a name="line-654"></a><span class="p">{</span>
-<a name="line-655"></a> <span class="n">QVariant</span> <span class="n">index</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">thumbnailMap</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">loadingDescription</span><span class="p">.</span><span class="n">thumbnailIdentifier</span><span class="p">().</span><span class="n">id</span><span class="p">);</span>
-<a name="line-656"></a><span class="cm">/*</span>
-<a name="line-657"></a><span class="cm"> QPair&lt;TileIndex, int&gt; indexForPixmap =</span>
-<a name="line-658"></a><span class="cm"> index.value&lt;QPair&lt;TileIndex, int&gt; &gt;();</span>
-<a name="line-659"></a><span class="cm">*/</span>
-<a name="line-660"></a> <span class="n">emit</span> <span class="nf">signalThumbnailAvailableForIndex</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">thumbnail</span><span class="p">.</span><span class="n">copy</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">thumbnail</span><span class="p">.</span><span class="n">size</span><span class="p">().</span><span class="n">width</span><span class="p">()</span> <span class="o">-</span> <span class="mi">2</span><span class="p">,</span> <span class="n">thumbnail</span><span class="p">.</span><span class="n">size</span><span class="p">().</span><span class="n">height</span><span class="p">()</span> <span class="o">-</span> <span class="mi">2</span><span class="p">));</span>
-<a name="line-661"></a><span class="p">}</span>
-<a name="line-662"></a>
-<a name="line-663"></a><span class="cm">/**</span>
-<a name="line-664"></a><span class="cm"> * @brief Sets the map active/inactive</span>
-<a name="line-665"></a><span class="cm"> * @param state New state of the map, true means active.</span>
-<a name="line-666"></a><span class="cm"> */</span>
-<a name="line-667"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">setActive</span><span class="p">(</span><span class="k">const</span> <span class="kt">bool</span> <span class="n">state</span><span class="p">)</span>
-<a name="line-668"></a><span class="p">{</span>
-<a name="line-669"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">activeState</span> <span class="o">=</span> <span class="n">state</span><span class="p">;</span>
-<a name="line-670"></a><span class="p">}</span>
-<a name="line-671"></a>
-<a name="line-672"></a><span class="n">AbstractMarkerTiler</span><span class="o">::</span><span class="n">Tile</span><span class="o">*</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">tileNew</span><span class="p">()</span>
-<a name="line-673"></a><span class="p">{</span>
-<a name="line-674"></a> <span class="k">return</span> <span class="k">new</span> <span class="n">MyTile</span><span class="p">();</span>
-<a name="line-675"></a><span class="p">}</span>
-<a name="line-676"></a>
-<a name="line-677"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">tileDelete</span><span class="p">(</span><span class="n">AbstractMarkerTiler</span><span class="o">::</span><span class="n">Tile</span><span class="o">*</span> <span class="k">const</span> <span class="n">tile</span><span class="p">)</span>
-<a name="line-678"></a><span class="p">{</span>
-<a name="line-679"></a> <span class="k">delete</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">tile</span><span class="p">);</span>
-<a name="line-680"></a><span class="p">}</span>
-<a name="line-681"></a>
-<a name="line-682"></a><span class="cm">/**</span>
-<a name="line-683"></a><span class="cm"> * @brief Receives notifications from the database when images were changed and updates the tiler</span>
-<a name="line-684"></a><span class="cm"> */</span>
-<a name="line-685"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">slotImageChange</span><span class="p">(</span><span class="k">const</span> <span class="n">ImageChangeset</span><span class="o">&amp;</span> <span class="n">changeset</span><span class="p">)</span>
-<a name="line-686"></a><span class="p">{</span>
-<a name="line-687"></a> <span class="k">const</span> <span class="n">DatabaseFields</span><span class="o">::</span><span class="n">Set</span> <span class="n">changes</span> <span class="o">=</span> <span class="n">changeset</span><span class="p">.</span><span class="n">changes</span><span class="p">();</span>
-<a name="line-688"></a><span class="cm">/*</span>
-<a name="line-689"></a><span class="cm"> const DatabaseFields::ItemPositions imagePositionChanges = changes;</span>
-<a name="line-690"></a><span class="cm">*/</span>
-<a name="line-691"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="p">((</span><span class="n">changes</span> <span class="o">&amp;</span> <span class="n">DatabaseFields</span><span class="o">::</span><span class="n">LatitudeNumber</span><span class="p">)</span> <span class="o">||</span>
-<a name="line-692"></a> <span class="p">(</span><span class="n">changes</span> <span class="o">&amp;</span> <span class="n">DatabaseFields</span><span class="o">::</span><span class="n">LongitudeNumber</span><span class="p">)</span> <span class="o">||</span>
-<a name="line-693"></a> <span class="p">(</span><span class="n">changes</span> <span class="o">&amp;</span> <span class="n">DatabaseFields</span><span class="o">::</span><span class="n">Altitude</span><span class="p">)))</span>
-<a name="line-694"></a> <span class="p">{</span>
-<a name="line-695"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-696"></a> <span class="p">}</span>
-<a name="line-697"></a>
-<a name="line-698"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">qlonglong</span><span class="o">&amp;</span> <span class="n">id</span><span class="p">,</span> <span class="n">changeset</span><span class="p">.</span><span class="n">ids</span><span class="p">())</span>
-<a name="line-699"></a> <span class="p">{</span>
-<a name="line-700"></a> <span class="k">const</span> <span class="n">ItemInfo</span> <span class="n">newItemInfo</span><span class="p">(</span><span class="n">id</span><span class="p">);</span>
-<a name="line-701"></a>
-<a name="line-702"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">newItemInfo</span><span class="p">.</span><span class="n">hasCoordinates</span><span class="p">())</span>
-<a name="line-703"></a> <span class="p">{</span>
-<a name="line-704"></a> <span class="c1">// the image has no coordinates any more</span>
-<a name="line-705"></a> <span class="c1">// remove it from the tiles and the image list</span>
-<a name="line-706"></a>
-<a name="line-707"></a> <span class="k">const</span> <span class="n">GPSItemInfo</span> <span class="n">oldInfo</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">id</span><span class="p">);</span>
-<a name="line-708"></a> <span class="k">const</span> <span class="n">GeoCoordinates</span> <span class="n">oldCoordinates</span> <span class="o">=</span> <span class="n">oldInfo</span><span class="p">.</span><span class="n">coordinates</span><span class="p">;</span>
-<a name="line-709"></a> <span class="k">const</span> <span class="n">TileIndex</span> <span class="n">oldTileIndex</span> <span class="o">=</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">fromCoordinates</span><span class="p">(</span><span class="n">oldCoordinates</span><span class="p">,</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">MaxLevel</span><span class="p">);</span>
-<a name="line-710"></a>
-<a name="line-711"></a> <span class="n">removeMarkerFromTileAndChildren</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">oldTileIndex</span><span class="p">,</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">rootTile</span><span class="p">()),</span> <span class="mi">0</span><span class="p">,</span> <span class="k">nullptr</span><span class="p">);</span>
-<a name="line-712"></a>
-<a name="line-713"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="n">id</span><span class="p">);</span>
-<a name="line-714"></a>
-<a name="line-715"></a> <span class="k">continue</span><span class="p">;</span>
-<a name="line-716"></a> <span class="p">}</span>
-<a name="line-717"></a>
-<a name="line-718"></a> <span class="n">GeoCoordinates</span> <span class="n">newCoordinates</span><span class="p">(</span><span class="n">newItemInfo</span><span class="p">.</span><span class="n">latitudeNumber</span><span class="p">(),</span> <span class="n">newItemInfo</span><span class="p">.</span><span class="n">longitudeNumber</span><span class="p">());</span>
-<a name="line-719"></a>
-<a name="line-720"></a> <span class="k">if</span> <span class="p">(</span><span class="n">newItemInfo</span><span class="p">.</span><span class="n">hasAltitude</span><span class="p">())</span>
-<a name="line-721"></a> <span class="p">{</span>
-<a name="line-722"></a> <span class="n">newCoordinates</span><span class="p">.</span><span class="n">setAlt</span><span class="p">(</span><span class="n">newItemInfo</span><span class="p">.</span><span class="n">altitudeNumber</span><span class="p">());</span>
-<a name="line-723"></a> <span class="p">}</span>
-<a name="line-724"></a>
-<a name="line-725"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">id</span><span class="p">))</span>
-<a name="line-726"></a> <span class="p">{</span>
-<a name="line-727"></a> <span class="c1">// the image id is known, therefore the image has already been sorted into tiles.</span>
-<a name="line-728"></a> <span class="c1">// We assume that the coordinates of the image have changed.</span>
-<a name="line-729"></a>
-<a name="line-730"></a> <span class="k">const</span> <span class="n">GPSItemInfo</span> <span class="n">oldInfo</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">id</span><span class="p">);</span>
-<a name="line-731"></a> <span class="k">const</span> <span class="n">GeoCoordinates</span> <span class="n">oldCoordinates</span> <span class="o">=</span> <span class="n">oldInfo</span><span class="p">.</span><span class="n">coordinates</span><span class="p">;</span>
-<a name="line-732"></a> <span class="k">const</span> <span class="n">GPSItemInfo</span> <span class="n">currentItemInfo</span> <span class="o">=</span> <span class="n">GPSItemInfo</span><span class="o">::</span><span class="n">fromIdCoordinatesRatingDateTime</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">newCoordinates</span><span class="p">,</span> <span class="n">newItemInfo</span><span class="p">.</span><span class="n">rating</span><span class="p">(),</span> <span class="n">newItemInfo</span><span class="p">.</span><span class="n">dateTime</span><span class="p">());</span>
-<a name="line-733"></a>
-<a name="line-734"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">currentItemInfo</span><span class="p">);</span>
-<a name="line-735"></a>
-<a name="line-736"></a> <span class="k">const</span> <span class="n">TileIndex</span> <span class="n">oldTileIndex</span> <span class="o">=</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">fromCoordinates</span><span class="p">(</span><span class="n">oldCoordinates</span><span class="p">,</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">MaxLevel</span><span class="p">);</span>
-<a name="line-737"></a> <span class="k">const</span> <span class="n">TileIndex</span> <span class="n">newTileIndex</span> <span class="o">=</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">fromCoordinates</span><span class="p">(</span><span class="n">newCoordinates</span><span class="p">,</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">MaxLevel</span><span class="p">);</span>
-<a name="line-738"></a>
-<a name="line-739"></a> <span class="c1">// find out up to which level the tile indices are equal</span>
-<a name="line-740"></a>
-<a name="line-741"></a> <span class="kt">int</span> <span class="n">separatorLevel</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
-<a name="line-742"></a>
-<a name="line-743"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">MaxLevel</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-744"></a> <span class="p">{</span>
-<a name="line-745"></a> <span class="k">if</span> <span class="p">(</span><span class="n">oldTileIndex</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="o">!=</span> <span class="n">newTileIndex</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">))</span>
-<a name="line-746"></a> <span class="p">{</span>
-<a name="line-747"></a> <span class="n">separatorLevel</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
-<a name="line-748"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-749"></a> <span class="p">}</span>
-<a name="line-750"></a> <span class="p">}</span>
-<a name="line-751"></a>
-<a name="line-752"></a> <span class="k">if</span> <span class="p">(</span><span class="n">separatorLevel</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="line-753"></a> <span class="p">{</span>
-<a name="line-754"></a> <span class="c1">// the tile index has not changed</span>
-<a name="line-755"></a>
-<a name="line-756"></a> <span class="k">continue</span><span class="p">;</span>
-<a name="line-757"></a> <span class="p">}</span>
-<a name="line-758"></a>
-<a name="line-759"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="n">currentTileOld</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">rootTile</span><span class="p">());</span>
-<a name="line-760"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="n">currentTileNew</span> <span class="o">=</span> <span class="n">currentTileOld</span><span class="p">;</span>
-<a name="line-761"></a> <span class="kt">int</span> <span class="n">level</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-762"></a>
-<a name="line-763"></a> <span class="k">for</span> <span class="p">(</span><span class="n">level</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">level</span> <span class="o">&lt;=</span> <span class="n">oldTileIndex</span><span class="p">.</span><span class="n">level</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">level</span><span class="p">)</span>
-<a name="line-764"></a> <span class="p">{</span>
-<a name="line-765"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentTileOld</span><span class="o">-&gt;</span><span class="n">childrenEmpty</span><span class="p">())</span>
-<a name="line-766"></a> <span class="p">{</span>
-<a name="line-767"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-768"></a> <span class="p">}</span>
-<a name="line-769"></a>
-<a name="line-770"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">tileIndex</span> <span class="o">=</span> <span class="n">oldTileIndex</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">level</span><span class="p">);</span>
-<a name="line-771"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="k">const</span> <span class="n">childTileOld</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">currentTileOld</span><span class="o">-&gt;</span><span class="n">getChild</span><span class="p">(</span><span class="n">tileIndex</span><span class="p">));</span>
-<a name="line-772"></a>
-<a name="line-773"></a> <span class="k">if</span> <span class="p">(</span><span class="n">childTileOld</span> <span class="o">==</span> <span class="k">nullptr</span><span class="p">)</span>
-<a name="line-774"></a> <span class="p">{</span>
-<a name="line-775"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-776"></a> <span class="p">}</span>
-<a name="line-777"></a>
-<a name="line-778"></a> <span class="k">if</span> <span class="p">(</span><span class="n">level</span> <span class="o">&lt;</span> <span class="n">separatorLevel</span><span class="p">)</span>
-<a name="line-779"></a> <span class="p">{</span>
-<a name="line-780"></a> <span class="n">currentTileOld</span> <span class="o">=</span> <span class="n">childTileOld</span><span class="p">;</span>
-<a name="line-781"></a> <span class="n">currentTileNew</span> <span class="o">=</span> <span class="n">currentTileOld</span><span class="p">;</span>
-<a name="line-782"></a> <span class="p">}</span>
-<a name="line-783"></a> <span class="k">else</span>
-<a name="line-784"></a> <span class="p">{</span>
-<a name="line-785"></a> <span class="n">removeMarkerFromTileAndChildren</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">oldTileIndex</span><span class="p">,</span> <span class="n">childTileOld</span><span class="p">,</span> <span class="n">level</span><span class="p">,</span> <span class="n">currentTileOld</span><span class="p">);</span>
-<a name="line-786"></a>
-<a name="line-787"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-788"></a> <span class="p">}</span>
-<a name="line-789"></a> <span class="p">}</span>
-<a name="line-790"></a>
-<a name="line-791"></a> <span class="n">addMarkerToTileAndChildren</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">newTileIndex</span><span class="p">,</span> <span class="n">currentTileNew</span><span class="p">,</span> <span class="n">level</span><span class="p">);</span>
-<a name="line-792"></a> <span class="p">}</span>
-<a name="line-793"></a> <span class="k">else</span>
-<a name="line-794"></a> <span class="p">{</span>
-<a name="line-795"></a> <span class="c1">// the image is new, add it to the existing tiles</span>
-<a name="line-796"></a>
-<a name="line-797"></a> <span class="k">const</span> <span class="n">GPSItemInfo</span> <span class="n">currentItemInfo</span> <span class="o">=</span> <span class="n">GPSItemInfo</span><span class="o">::</span><span class="n">fromIdCoordinatesRatingDateTime</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">newCoordinates</span><span class="p">,</span> <span class="n">newItemInfo</span><span class="p">.</span><span class="n">rating</span><span class="p">(),</span> <span class="n">newItemInfo</span><span class="p">.</span><span class="n">dateTime</span><span class="p">());</span>
-<a name="line-798"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imagesHash</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">currentItemInfo</span><span class="p">);</span>
-<a name="line-799"></a>
-<a name="line-800"></a> <span class="k">const</span> <span class="n">TileIndex</span> <span class="n">newMarkerTileIndex</span> <span class="o">=</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">fromCoordinates</span><span class="p">(</span><span class="n">currentItemInfo</span><span class="p">.</span><span class="n">coordinates</span><span class="p">,</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">MaxLevel</span><span class="p">);</span>
-<a name="line-801"></a>
-<a name="line-802"></a> <span class="n">addMarkerToTileAndChildren</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">newMarkerTileIndex</span><span class="p">,</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">rootTile</span><span class="p">()),</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-803"></a> <span class="p">}</span>
-<a name="line-804"></a> <span class="p">}</span>
-<a name="line-805"></a>
-<a name="line-806"></a> <span class="n">emit</span> <span class="n">signalTilesOrSelectionChanged</span><span class="p">();</span>
-<a name="line-807"></a><span class="p">}</span>
-<a name="line-808"></a>
-<a name="line-809"></a><span class="cm">/**</span>
-<a name="line-810"></a><span class="cm"> * @brief Receives notifications from the album model about new items</span>
-<a name="line-811"></a><span class="cm"> */</span>
-<a name="line-812"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">slotNewModelData</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">ItemInfo</span><span class="o">&gt;&amp;</span> <span class="n">infoList</span><span class="p">)</span>
-<a name="line-813"></a><span class="p">{</span>
-<a name="line-814"></a> <span class="c1">// We do not actually store the data from the model, we just want</span>
-<a name="line-815"></a> <span class="c1">// to know that something was changed.</span>
-<a name="line-816"></a> <span class="c1">/// @todo Also monitor removed, reset, etc. signals</span>
-<a name="line-817"></a>
-<a name="line-818"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">infoList</span><span class="p">);</span>
-<a name="line-819"></a>
-<a name="line-820"></a> <span class="n">emit</span> <span class="nf">signalTilesOrSelectionChanged</span><span class="p">();</span>
-<a name="line-821"></a><span class="p">}</span>
-<a name="line-822"></a>
-<a name="line-823"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">setRegionSelection</span><span class="p">(</span><span class="k">const</span> <span class="n">GeoCoordinates</span><span class="o">::</span><span class="n">Pair</span><span class="o">&amp;</span> <span class="n">sel</span><span class="p">)</span>
-<a name="line-824"></a><span class="p">{</span>
-<a name="line-825"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentRegionSelection</span> <span class="o">=</span> <span class="n">sel</span><span class="p">;</span>
-<a name="line-826"></a>
-<a name="line-827"></a> <span class="k">if</span> <span class="p">(</span><span class="n">sel</span><span class="p">.</span><span class="n">first</span><span class="p">.</span><span class="n">hasCoordinates</span><span class="p">())</span>
-<a name="line-828"></a> <span class="p">{</span>
-<a name="line-829"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapGlobalGroupState</span> <span class="o">|=</span> <span class="n">RegionSelectedMask</span><span class="p">;</span>
-<a name="line-830"></a> <span class="p">}</span>
-<a name="line-831"></a> <span class="k">else</span>
-<a name="line-832"></a> <span class="p">{</span>
-<a name="line-833"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapGlobalGroupState</span> <span class="o">&amp;=</span> <span class="o">~</span><span class="n">RegionSelectedMask</span><span class="p">;</span>
-<a name="line-834"></a> <span class="p">}</span>
-<a name="line-835"></a>
-<a name="line-836"></a> <span class="n">emit</span> <span class="n">signalTilesOrSelectionChanged</span><span class="p">();</span>
-<a name="line-837"></a><span class="p">}</span>
-<a name="line-838"></a>
-<a name="line-839"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">removeCurrentRegionSelection</span><span class="p">()</span>
-<a name="line-840"></a><span class="p">{</span>
-<a name="line-841"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentRegionSelection</span><span class="p">.</span><span class="n">first</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
-<a name="line-842"></a>
-<a name="line-843"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapGlobalGroupState</span> <span class="o">&amp;=</span> <span class="o">~</span><span class="n">RegionSelectedMask</span><span class="p">;</span>
-<a name="line-844"></a>
-<a name="line-845"></a> <span class="n">emit</span> <span class="nf">signalTilesOrSelectionChanged</span><span class="p">();</span>
-<a name="line-846"></a><span class="p">}</span>
-<a name="line-847"></a>
-<a name="line-848"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">onIndicesClicked</span><span class="p">(</span><span class="k">const</span> <span class="n">ClickInfo</span><span class="o">&amp;</span> <span class="n">clickInfo</span><span class="p">)</span>
-<a name="line-849"></a><span class="p">{</span>
-<a name="line-850"></a> <span class="c1">/// @todo Also handle the representative index</span>
-<a name="line-851"></a>
-<a name="line-852"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="o">&gt;</span> <span class="n">clickedImagesId</span><span class="p">;</span>
-<a name="line-853"></a>
-<a name="line-854"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">TileIndex</span><span class="o">&amp;</span> <span class="n">tileIndex</span><span class="p">,</span> <span class="n">clickInfo</span><span class="p">.</span><span class="n">tileIndicesList</span><span class="p">)</span>
-<a name="line-855"></a> <span class="p">{</span>
-<a name="line-856"></a> <span class="n">clickedImagesId</span> <span class="o">&lt;&lt;</span> <span class="n">getTileMarkerIds</span><span class="p">(</span><span class="n">tileIndex</span><span class="p">);</span>
-<a name="line-857"></a> <span class="p">}</span>
-<a name="line-858"></a>
-<a name="line-859"></a> <span class="kt">int</span> <span class="n">repImageId</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
-<a name="line-860"></a>
-<a name="line-861"></a> <span class="k">if</span> <span class="p">(</span><span class="n">clickInfo</span><span class="p">.</span><span class="n">representativeIndex</span><span class="p">.</span><span class="n">canConvert</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">())</span>
-<a name="line-862"></a> <span class="p">{</span>
-<a name="line-863"></a> <span class="n">repImageId</span> <span class="o">=</span> <span class="n">clickInfo</span><span class="p">.</span><span class="n">representativeIndex</span><span class="p">.</span><span class="n">value</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">TileIndex</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">().</span><span class="n">second</span><span class="p">;</span>
-<a name="line-864"></a> <span class="p">}</span>
-<a name="line-865"></a>
-<a name="line-866"></a> <span class="k">if</span> <span class="p">(</span><span class="n">clickInfo</span><span class="p">.</span><span class="n">currentMouseMode</span> <span class="o">==</span> <span class="n">MouseModeSelectThumbnail</span> <span class="o">&amp;&amp;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="p">)</span>
-<a name="line-867"></a> <span class="p">{</span>
-<a name="line-868"></a> <span class="cm">/**</span>
-<a name="line-869"></a><span class="cm"> * @todo This does not work properly, because not all images in a tile</span>
-<a name="line-870"></a><span class="cm"> * may be selectable because some of them are outside of the region selection</span>
-<a name="line-871"></a><span class="cm"> */</span>
-<a name="line-872"></a> <span class="k">const</span> <span class="kt">bool</span> <span class="n">doSelect</span> <span class="o">=</span> <span class="p">(</span><span class="n">clickInfo</span><span class="p">.</span><span class="n">groupSelectionState</span> <span class="o">&amp;</span> <span class="n">SelectedMask</span><span class="p">)</span> <span class="o">!=</span> <span class="n">SelectedAll</span><span class="p">;</span>
-<a name="line-873"></a>
-<a name="line-874"></a> <span class="k">const</span> <span class="n">QItemSelectionModel</span><span class="o">::</span><span class="n">SelectionFlags</span> <span class="n">selectionFlags</span> <span class="o">=</span>
-<a name="line-875"></a> <span class="p">(</span><span class="n">doSelect</span> <span class="o">?</span> <span class="n">QItemSelectionModel</span><span class="o">::</span><span class="nl">Select</span> <span class="p">:</span> <span class="n">QItemSelectionModel</span><span class="o">::</span><span class="n">Deselect</span><span class="p">)</span>
-<a name="line-876"></a> <span class="o">|</span> <span class="n">QItemSelectionModel</span><span class="o">::</span><span class="n">Rows</span><span class="p">;</span>
-<a name="line-877"></a>
-<a name="line-878"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">clickedImagesId</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-879"></a> <span class="p">{</span>
-<a name="line-880"></a> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageFilterModel</span><span class="o">-&gt;</span><span class="n">indexForImageId</span><span class="p">(</span><span class="n">clickedImagesId</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">));</span>
-<a name="line-881"></a>
-<a name="line-882"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="o">-&gt;</span><span class="n">isSelected</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">)</span> <span class="o">!=</span> <span class="n">doSelect</span><span class="p">)</span>
-<a name="line-883"></a> <span class="p">{</span>
-<a name="line-884"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="o">-&gt;</span><span class="n">select</span><span class="p">(</span><span class="n">currentIndex</span><span class="p">,</span> <span class="n">selectionFlags</span><span class="p">);</span>
-<a name="line-885"></a> <span class="p">}</span>
-<a name="line-886"></a> <span class="p">}</span>
-<a name="line-887"></a>
-<a name="line-888"></a> <span class="k">if</span> <span class="p">(</span><span class="n">repImageId</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-889"></a> <span class="p">{</span>
-<a name="line-890"></a> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">repImageIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageFilterModel</span><span class="o">-&gt;</span><span class="n">indexForImageId</span><span class="p">(</span><span class="n">repImageId</span><span class="p">);</span>
-<a name="line-891"></a>
-<a name="line-892"></a> <span class="k">if</span> <span class="p">(</span><span class="n">repImageIndex</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
-<a name="line-893"></a> <span class="p">{</span>
-<a name="line-894"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">repImageIndex</span><span class="p">,</span> <span class="n">selectionFlags</span><span class="p">);</span>
-<a name="line-895"></a> <span class="p">}</span>
-<a name="line-896"></a> <span class="p">}</span>
-<a name="line-897"></a> <span class="p">}</span>
-<a name="line-898"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">clickInfo</span><span class="p">.</span><span class="n">currentMouseMode</span> <span class="o">==</span> <span class="n">MouseModeFilter</span><span class="p">)</span>
-<a name="line-899"></a> <span class="p">{</span>
-<a name="line-900"></a> <span class="n">setPositiveFilterIsActive</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-901"></a> <span class="n">emit</span> <span class="nf">signalModelFilteredImages</span><span class="p">(</span><span class="n">clickedImagesId</span><span class="p">);</span>
-<a name="line-902"></a> <span class="p">}</span>
-<a name="line-903"></a><span class="p">}</span>
-<a name="line-904"></a>
-<a name="line-905"></a><span class="n">QList</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="o">&gt;</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">getTileMarkerIds</span><span class="p">(</span><span class="k">const</span> <span class="n">TileIndex</span><span class="o">&amp;</span> <span class="n">tileIndex</span><span class="p">)</span>
-<a name="line-906"></a><span class="p">{</span>
-<a name="line-907"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">tileIndex</span><span class="p">.</span><span class="n">level</span><span class="p">()</span> <span class="o">&lt;=</span> <span class="n">TileIndex</span><span class="o">::</span><span class="n">MaxLevel</span><span class="p">);</span>
-<a name="line-908"></a>
-<a name="line-909"></a> <span class="k">const</span> <span class="n">MyTile</span><span class="o">*</span> <span class="k">const</span> <span class="n">myTile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">getTile</span><span class="p">(</span><span class="n">tileIndex</span><span class="p">,</span> <span class="nb">true</span><span class="p">));</span>
-<a name="line-910"></a>
-<a name="line-911"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">myTile</span><span class="p">)</span>
-<a name="line-912"></a> <span class="p">{</span>
-<a name="line-913"></a> <span class="k">return</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="o">&gt;</span><span class="p">();</span>
-<a name="line-914"></a> <span class="p">}</span>
-<a name="line-915"></a>
-<a name="line-916"></a> <span class="k">return</span> <span class="n">myTile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">;</span>
-<a name="line-917"></a><span class="p">}</span>
-<a name="line-918"></a>
-<a name="line-919"></a><span class="n">GeoGroupState</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">getGlobalGroupState</span><span class="p">()</span>
-<a name="line-920"></a><span class="p">{</span>
-<a name="line-921"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapGlobalGroupState</span><span class="p">;</span>
-<a name="line-922"></a><span class="p">}</span>
-<a name="line-923"></a>
-<a name="line-924"></a><span class="n">GeoGroupState</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">getImageState</span><span class="p">(</span><span class="k">const</span> <span class="n">qlonglong</span> <span class="n">imageId</span><span class="p">)</span>
-<a name="line-925"></a><span class="p">{</span>
-<a name="line-926"></a> <span class="n">GeoGroupState</span> <span class="n">imageState</span><span class="p">;</span>
-<a name="line-927"></a>
-<a name="line-928"></a> <span class="c1">// is the image inside the region selection?</span>
-<a name="line-929"></a>
-<a name="line-930"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mapGlobalGroupState</span> <span class="o">&amp;</span> <span class="n">RegionSelectedMask</span><span class="p">)</span>
-<a name="line-931"></a> <span class="p">{</span>
-<a name="line-932"></a> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">imageAlbumModelIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageAlbumModel</span><span class="o">-&gt;</span><span class="n">indexForImageId</span><span class="p">(</span><span class="n">imageId</span><span class="p">);</span>
-<a name="line-933"></a>
-<a name="line-934"></a> <span class="k">if</span> <span class="p">(</span><span class="n">imageAlbumModelIndex</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
-<a name="line-935"></a> <span class="p">{</span>
-<a name="line-936"></a> <span class="n">imageState</span> <span class="o">|=</span> <span class="n">RegionSelectedAll</span><span class="p">;</span>
-<a name="line-937"></a> <span class="p">}</span>
-<a name="line-938"></a> <span class="k">else</span>
-<a name="line-939"></a> <span class="p">{</span>
-<a name="line-940"></a> <span class="c1">// not inside region selection, therefore</span>
-<a name="line-941"></a> <span class="c1">// no other flags can apply</span>
-<a name="line-942"></a>
-<a name="line-943"></a> <span class="k">return</span> <span class="n">RegionSelectedNone</span><span class="p">;</span>
-<a name="line-944"></a> <span class="p">}</span>
-<a name="line-945"></a> <span class="p">}</span>
-<a name="line-946"></a>
-<a name="line-947"></a> <span class="c1">// is the image positively filtered?</span>
-<a name="line-948"></a>
-<a name="line-949"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mapGlobalGroupState</span> <span class="o">&amp;</span> <span class="n">FilteredPositiveMask</span><span class="p">)</span>
-<a name="line-950"></a> <span class="p">{</span>
-<a name="line-951"></a> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">imageIndexInFilterModel</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageFilterModel</span><span class="o">-&gt;</span><span class="n">indexForImageId</span><span class="p">(</span><span class="n">imageId</span><span class="p">);</span>
-<a name="line-952"></a>
-<a name="line-953"></a> <span class="k">if</span> <span class="p">(</span><span class="n">imageIndexInFilterModel</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
-<a name="line-954"></a> <span class="p">{</span>
-<a name="line-955"></a> <span class="n">imageState</span> <span class="o">|=</span> <span class="n">FilteredPositiveAll</span><span class="p">;</span>
-<a name="line-956"></a>
-<a name="line-957"></a> <span class="c1">// is the image selected?</span>
-<a name="line-958"></a>
-<a name="line-959"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="o">-&gt;</span><span class="n">hasSelection</span><span class="p">())</span>
-<a name="line-960"></a> <span class="p">{</span>
-<a name="line-961"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="o">-&gt;</span><span class="n">isSelected</span><span class="p">(</span><span class="n">imageIndexInFilterModel</span><span class="p">))</span>
-<a name="line-962"></a> <span class="p">{</span>
-<a name="line-963"></a> <span class="n">imageState</span> <span class="o">|=</span> <span class="n">SelectedAll</span><span class="p">;</span>
-<a name="line-964"></a> <span class="p">}</span>
-<a name="line-965"></a> <span class="p">}</span>
-<a name="line-966"></a> <span class="p">}</span>
-<a name="line-967"></a> <span class="k">else</span>
-<a name="line-968"></a> <span class="p">{</span>
-<a name="line-969"></a> <span class="c1">// the image is not positively filtered, therefore it can</span>
-<a name="line-970"></a> <span class="c1">// not be selected</span>
-<a name="line-971"></a>
-<a name="line-972"></a> <span class="k">return</span> <span class="n">imageState</span><span class="p">;</span>
-<a name="line-973"></a> <span class="p">}</span>
-<a name="line-974"></a> <span class="p">}</span>
-<a name="line-975"></a> <span class="k">else</span>
-<a name="line-976"></a> <span class="p">{</span>
-<a name="line-977"></a> <span class="c1">// is the image selected?</span>
-<a name="line-978"></a>
-<a name="line-979"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="o">-&gt;</span><span class="n">hasSelection</span><span class="p">())</span>
-<a name="line-980"></a> <span class="p">{</span>
-<a name="line-981"></a> <span class="k">const</span> <span class="n">QModelIndex</span> <span class="n">imageIndexInFilterModel</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageFilterModel</span><span class="o">-&gt;</span><span class="n">indexForImageId</span><span class="p">(</span><span class="n">imageId</span><span class="p">);</span>
-<a name="line-982"></a>
-<a name="line-983"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="o">-&gt;</span><span class="n">isSelected</span><span class="p">(</span><span class="n">imageIndexInFilterModel</span><span class="p">))</span>
-<a name="line-984"></a> <span class="p">{</span>
-<a name="line-985"></a> <span class="n">imageState</span> <span class="o">|=</span> <span class="n">SelectedAll</span><span class="p">;</span>
-<a name="line-986"></a> <span class="p">}</span>
-<a name="line-987"></a> <span class="p">}</span>
-<a name="line-988"></a> <span class="p">}</span>
-<a name="line-989"></a>
-<a name="line-990"></a> <span class="k">return</span> <span class="n">imageState</span><span class="p">;</span>
-<a name="line-991"></a><span class="p">}</span>
-<a name="line-992"></a>
-<a name="line-993"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">setPositiveFilterIsActive</span><span class="p">(</span><span class="k">const</span> <span class="kt">bool</span> <span class="n">state</span><span class="p">)</span>
-<a name="line-994"></a><span class="p">{</span>
-<a name="line-995"></a> <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="p">)</span>
-<a name="line-996"></a> <span class="p">{</span>
-<a name="line-997"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapGlobalGroupState</span> <span class="o">|=</span> <span class="n">FilteredPositiveMask</span><span class="p">;</span>
-<a name="line-998"></a> <span class="p">}</span>
-<a name="line-999"></a> <span class="k">else</span>
-<a name="line-1000"></a> <span class="p">{</span>
-<a name="line-1001"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mapGlobalGroupState</span> <span class="o">&amp;=</span> <span class="o">~</span><span class="n">FilteredPositiveMask</span><span class="p">;</span>
-<a name="line-1002"></a> <span class="p">}</span>
-<a name="line-1003"></a>
-<a name="line-1004"></a> <span class="c1">/// @todo Somehow, a delay is necessary before emitting this signal - probably the order in which the filtering</span>
-<a name="line-1005"></a> <span class="c1">/// is propagated to other parts of digikam is wrong or just takes too long</span>
-<a name="line-1006"></a>
-<a name="line-1007"></a> <span class="n">QTimer</span><span class="o">::</span><span class="n">singleShot</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalTilesOrSelectionChanged</span><span class="p">()));</span>
-<a name="line-1008"></a><span class="cm">/*</span>
-<a name="line-1009"></a><span class="cm"> emit signalTilesOrSelectionChanged();</span>
-<a name="line-1010"></a><span class="cm">*/</span>
-<a name="line-1011"></a><span class="p">}</span>
-<a name="line-1012"></a>
-<a name="line-1013"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">slotSelectionChanged</span><span class="p">(</span><span class="k">const</span> <span class="n">QItemSelection</span><span class="o">&amp;</span> <span class="n">selected</span><span class="p">,</span> <span class="k">const</span> <span class="n">QItemSelection</span><span class="o">&amp;</span> <span class="n">deselected</span><span class="p">)</span>
-<a name="line-1014"></a><span class="p">{</span>
-<a name="line-1015"></a> <span class="c1">/// @todo Buffer this information, update the tiles, etc.</span>
-<a name="line-1016"></a>
-<a name="line-1017"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">selected</span><span class="p">);</span>
-<a name="line-1018"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">deselected</span><span class="p">);</span>
-<a name="line-1019"></a>
-<a name="line-1020"></a> <span class="n">emit</span> <span class="nf">signalTilesOrSelectionChanged</span><span class="p">();</span>
-<a name="line-1021"></a><span class="p">}</span>
-<a name="line-1022"></a>
-<a name="line-1023"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">removeMarkerFromTileAndChildren</span><span class="p">(</span><span class="k">const</span> <span class="n">qlonglong</span> <span class="n">imageId</span><span class="p">,</span> <span class="k">const</span> <span class="n">TileIndex</span><span class="o">&amp;</span> <span class="n">markerTileIndex</span><span class="p">,</span> <span class="n">MyTile</span><span class="o">*</span> <span class="k">const</span> <span class="n">startTile</span><span class="p">,</span> <span class="k">const</span> <span class="kt">int</span> <span class="n">startTileLevel</span><span class="p">,</span> <span class="n">MyTile</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentTile</span><span class="p">)</span>
-<a name="line-1024"></a><span class="p">{</span>
-<a name="line-1025"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="n">currentParentTile</span> <span class="o">=</span> <span class="n">parentTile</span><span class="p">;</span>
-<a name="line-1026"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="n">currentTile</span> <span class="o">=</span> <span class="n">startTile</span><span class="p">;</span>
-<a name="line-1027"></a>
-<a name="line-1028"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">level</span> <span class="o">=</span> <span class="n">startTileLevel</span> <span class="p">;</span> <span class="n">level</span> <span class="o">&lt;=</span> <span class="n">markerTileIndex</span><span class="p">.</span><span class="n">level</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">level</span><span class="p">)</span>
-<a name="line-1029"></a> <span class="p">{</span>
-<a name="line-1030"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">currentTile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">imageId</span><span class="p">))</span>
-<a name="line-1031"></a> <span class="p">{</span>
-<a name="line-1032"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-1033"></a> <span class="p">}</span>
-<a name="line-1034"></a>
-<a name="line-1035"></a> <span class="n">currentTile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">removeOne</span><span class="p">(</span><span class="n">imageId</span><span class="p">);</span>
-<a name="line-1036"></a>
-<a name="line-1037"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentTile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-1038"></a> <span class="p">{</span>
-<a name="line-1039"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentTile</span> <span class="o">==</span> <span class="n">rootTile</span><span class="p">())</span>
-<a name="line-1040"></a> <span class="p">{</span>
-<a name="line-1041"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-1042"></a> <span class="p">}</span>
-<a name="line-1043"></a>
-<a name="line-1044"></a> <span class="c1">// this tile can be deleted</span>
-<a name="line-1045"></a>
-<a name="line-1046"></a> <span class="n">tileDeleteChild</span><span class="p">(</span><span class="n">currentParentTile</span><span class="p">,</span> <span class="n">currentTile</span><span class="p">);</span>
-<a name="line-1047"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-1048"></a> <span class="p">}</span>
-<a name="line-1049"></a>
-<a name="line-1050"></a> <span class="n">currentParentTile</span> <span class="o">=</span> <span class="n">currentTile</span><span class="p">;</span>
-<a name="line-1051"></a> <span class="n">currentTile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">currentParentTile</span><span class="o">-&gt;</span><span class="n">getChild</span><span class="p">(</span><span class="n">markerTileIndex</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">level</span><span class="p">)));</span>
-<a name="line-1052"></a>
-<a name="line-1053"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">currentTile</span><span class="p">)</span>
-<a name="line-1054"></a> <span class="p">{</span>
-<a name="line-1055"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-1056"></a> <span class="p">}</span>
-<a name="line-1057"></a> <span class="p">}</span>
-<a name="line-1058"></a><span class="p">}</span>
-<a name="line-1059"></a>
-<a name="line-1060"></a><span class="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">addMarkerToTileAndChildren</span><span class="p">(</span><span class="k">const</span> <span class="n">qlonglong</span> <span class="n">imageId</span><span class="p">,</span> <span class="k">const</span> <span class="n">TileIndex</span><span class="o">&amp;</span> <span class="n">markerTileIndex</span><span class="p">,</span> <span class="n">MyTile</span><span class="o">*</span> <span class="k">const</span> <span class="n">startTile</span><span class="p">,</span> <span class="k">const</span> <span class="kt">int</span> <span class="n">startTileLevel</span><span class="p">)</span>
-<a name="line-1061"></a><span class="p">{</span>
-<a name="line-1062"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="n">currentTile</span> <span class="o">=</span> <span class="n">startTile</span><span class="p">;</span>
-<a name="line-1063"></a>
-<a name="line-1064"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">level</span> <span class="o">=</span> <span class="n">startTileLevel</span> <span class="p">;</span> <span class="n">level</span> <span class="o">&lt;=</span> <span class="n">markerTileIndex</span><span class="p">.</span><span class="n">level</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">level</span><span class="p">)</span>
-<a name="line-1065"></a> <span class="p">{</span>
-<a name="line-1066"></a> <span class="c1">/// @todo This could be possible until all code paths are checked</span>
-<a name="line-1067"></a>
-<a name="line-1068"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">currentTile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">imageId</span><span class="p">))</span>
-<a name="line-1069"></a> <span class="p">{</span>
-<a name="line-1070"></a> <span class="n">currentTile</span><span class="o">-&gt;</span><span class="n">imagesId</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">imageId</span><span class="p">);</span>
-<a name="line-1071"></a> <span class="p">}</span>
-<a name="line-1072"></a>
-<a name="line-1073"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentTile</span><span class="o">-&gt;</span><span class="n">childrenEmpty</span><span class="p">())</span>
-<a name="line-1074"></a> <span class="p">{</span>
-<a name="line-1075"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-1076"></a> <span class="p">}</span>
-<a name="line-1077"></a>
-<a name="line-1078"></a> <span class="n">MyTile</span><span class="o">*</span> <span class="n">nextTile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">currentTile</span><span class="o">-&gt;</span><span class="n">getChild</span><span class="p">(</span><span class="n">markerTileIndex</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">level</span><span class="p">)));</span>
-<a name="line-1079"></a>
-<a name="line-1080"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">nextTile</span><span class="p">)</span>
-<a name="line-1081"></a> <span class="p">{</span>
-<a name="line-1082"></a> <span class="n">nextTile</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">MyTile</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">tileNew</span><span class="p">());</span>
-<a name="line-1083"></a> <span class="n">currentTile</span><span class="o">-&gt;</span><span class="n">addChild</span><span class="p">(</span><span class="n">markerTileIndex</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">level</span><span class="p">),</span> <span class="n">nextTile</span><span class="p">);</span>
-<a name="line-1084"></a> <span class="p">}</span>
-<a name="line-1085"></a>
-<a name="line-1086"></a> <span class="n">currentTile</span> <span class="o">=</span> <span class="n">nextTile</span><span class="p">;</span>
-<a name="line-1087"></a> <span class="p">}</span>
-<a name="line-1088"></a><span class="p">}</span>
-<a name="line-1089"></a>
-<a name="line-1090"></a><span class="p">}</span> <span class="c1">// namespace Digikam</span>
-</pre></div>
-</td></tr></table>
- </div>
- <div id="footer">
- <p>
- Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
- </br>
- Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
- IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
- <p>
- </div>
- </body>
-</html>
diff --git a/static/reports/cppcheck/master/25.html b/static/reports/cppcheck/master/25.html
deleted file mode 100644
index 54b080113..000000000
--- a/static/reports/cppcheck/master/25.html
+++ /dev/null
@@ -1,1983 +0,0 @@
-
-<!DOCTYPE html>
-<html lang="en">
- <head>
- <meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
- <link rel="stylesheet" href="style.css">
- <style>
-.highlight .hll { background-color: #ffffcc }
-.highlight { background: #ffffff; }
-.highlight .c { color: #888888 } /* Comment */
-.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
-.highlight .k { color: #008800; font-weight: bold } /* Keyword */
-.highlight .o { color: #333333 } /* Operator */
-.highlight .ch { color: #888888 } /* Comment.Hashbang */
-.highlight .cm { color: #888888 } /* Comment.Multiline */
-.highlight .cp { color: #557799 } /* Comment.Preproc */
-.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
-.highlight .c1 { color: #888888 } /* Comment.Single */
-.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
-.highlight .gd { color: #A00000 } /* Generic.Deleted */
-.highlight .ge { font-style: italic } /* Generic.Emph */
-.highlight .gr { color: #FF0000 } /* Generic.Error */
-.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
-.highlight .gi { color: #00A000 } /* Generic.Inserted */
-.highlight .go { color: #888888 } /* Generic.Output */
-.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
-.highlight .gs { font-weight: bold } /* Generic.Strong */
-.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.highlight .gt { color: #0044DD } /* Generic.Traceback */
-.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
-.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
-.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
-.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
-.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
-.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
-.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
-.highlight .s { background-color: #fff0f0 } /* Literal.String */
-.highlight .na { color: #0000CC } /* Name.Attribute */
-.highlight .nb { color: #007020 } /* Name.Builtin */
-.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
-.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
-.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
-.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
-.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
-.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
-.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
-.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
-.highlight .nt { color: #007700 } /* Name.Tag */
-.highlight .nv { color: #996633 } /* Name.Variable */
-.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
-.highlight .w { color: #bbbbbb } /* Text.Whitespace */
-.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
-.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
-.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
-.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
-.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
-.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
-.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
-.highlight .sc { color: #0044DD } /* Literal.String.Char */
-.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
-.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
-.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
-.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
-.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
-.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
-.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
-.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
-.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
-.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
-.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
-.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
-.highlight .vc { color: #336699 } /* Name.Variable.Class */
-.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
-.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
-.highlight .vm { color: #996633 } /* Name.Variable.Magic */
-.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
- </style>
- <script language="javascript">
- function getStyle(el,styleProp) {
- if (el.currentStyle)
- var y = el.currentStyle[styleProp];
- else if (window.getComputedStyle)
- var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
- return y;
- }
- function toggle() {
- var el = this.expandable_content;
- var mark = this.expandable_marker;
- if (el.style.display == "block") {
- el.style.display = "none";
- mark.innerHTML = "[+]";
- } else {
- el.style.display = "block";
- mark.innerHTML = "[-]";
- }
- }
- function init_expandables() {
- var elts = document.getElementsByClassName("expandable");
- for (var i = 0; i < elts.length; i++) {
- var el = elts[i];
- var clickable = el.getElementsByTagName("span")[0];
- var marker = clickable.getElementsByClassName("marker")[0];
- var content = el.getElementsByClassName("content")[0];
- var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
- content.style.width = width + "px";
- clickable.expandable_content = content;
- clickable.expandable_marker = marker;
- clickable.onclick = toggle;
- }
- }
- function set_class_display(c, st) {
- var elements = document.querySelectorAll('.' + c),
- len = elements.length;
- for (i = 0; i < len; i++) {
- elements[i].style.display = st;
- }
- }
- function toggle_class_visibility(id) {
- var box = document.getElementById(id);
- set_class_display(id, box.checked ? '' : 'none');
- }
- </script>
- </head>
- <body onload="init_expandables()">
- <div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/utilities/setup/metadata/setupmetadata.cpp </h1>
- </div>
- <div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> setupmetadata.cpp</p>
-<a href='25.html#line-884'> shadowVar 884</a><a href='25.html#line-896'> shadowVar 896</a><a href='25.html#line-901'> shadowVar 901</a><a href='25.html#line-906'> shadowVar 906</a>
- </div>
- <div id="content">
-<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
-100
-101
-102
-103
-104
-105
-106
-107
-108
-109
-110
-111
-112
-113
-114
-115
-116
-117
-118
-119
-120
-121
-122
-123
-124
-125
-126
-127
-128
-129
-130
-131
-132
-133
-134
-135
-136
-137
-138
-139
-140
-141
-142
-143
-144
-145
-146
-147
-148
-149
-150
-151
-152
-153
-154
-155
-156
-157
-158
-159
-160
-161
-162
-163
-164
-165
-166
-167
-168
-169
-170
-171
-172
-173
-174
-175
-176
-177
-178
-179
-180
-181
-182
-183
-184
-185
-186
-187
-188
-189
-190
-191
-192
-193
-194
-195
-196
-197
-198
-199
-200
-201
-202
-203
-204
-205
-206
-207
-208
-209
-210
-211
-212
-213
-214
-215
-216
-217
-218
-219
-220
-221
-222
-223
-224
-225
-226
-227
-228
-229
-230
-231
-232
-233
-234
-235
-236
-237
-238
-239
-240
-241
-242
-243
-244
-245
-246
-247
-248
-249
-250
-251
-252
-253
-254
-255
-256
-257
-258
-259
-260
-261
-262
-263
-264
-265
-266
-267
-268
-269
-270
-271
-272
-273
-274
-275
-276
-277
-278
-279
-280
-281
-282
-283
-284
-285
-286
-287
-288
-289
-290
-291
-292
-293
-294
-295
-296
-297
-298
-299
-300
-301
-302
-303
-304
-305
-306
-307
-308
-309
-310
-311
-312
-313
-314
-315
-316
-317
-318
-319
-320
-321
-322
-323
-324
-325
-326
-327
-328
-329
-330
-331
-332
-333
-334
-335
-336
-337
-338
-339
-340
-341
-342
-343
-344
-345
-346
-347
-348
-349
-350
-351
-352
-353
-354
-355
-356
-357
-358
-359
-360
-361
-362
-363
-364
-365
-366
-367
-368
-369
-370
-371
-372
-373
-374
-375
-376
-377
-378
-379
-380
-381
-382
-383
-384
-385
-386
-387
-388
-389
-390
-391
-392
-393
-394
-395
-396
-397
-398
-399
-400
-401
-402
-403
-404
-405
-406
-407
-408
-409
-410
-411
-412
-413
-414
-415
-416
-417
-418
-419
-420
-421
-422
-423
-424
-425
-426
-427
-428
-429
-430
-431
-432
-433
-434
-435
-436
-437
-438
-439
-440
-441
-442
-443
-444
-445
-446
-447
-448
-449
-450
-451
-452
-453
-454
-455
-456
-457
-458
-459
-460
-461
-462
-463
-464
-465
-466
-467
-468
-469
-470
-471
-472
-473
-474
-475
-476
-477
-478
-479
-480
-481
-482
-483
-484
-485
-486
-487
-488
-489
-490
-491
-492
-493
-494
-495
-496
-497
-498
-499
-500
-501
-502
-503
-504
-505
-506
-507
-508
-509
-510
-511
-512
-513
-514
-515
-516
-517
-518
-519
-520
-521
-522
-523
-524
-525
-526
-527
-528
-529
-530
-531
-532
-533
-534
-535
-536
-537
-538
-539
-540
-541
-542
-543
-544
-545
-546
-547
-548
-549
-550
-551
-552
-553
-554
-555
-556
-557
-558
-559
-560
-561
-562
-563
-564
-565
-566
-567
-568
-569
-570
-571
-572
-573
-574
-575
-576
-577
-578
-579
-580
-581
-582
-583
-584
-585
-586
-587
-588
-589
-590
-591
-592
-593
-594
-595
-596
-597
-598
-599
-600
-601
-602
-603
-604
-605
-606
-607
-608
-609
-610
-611
-612
-613
-614
-615
-616
-617
-618
-619
-620
-621
-622
-623
-624
-625
-626
-627
-628
-629
-630
-631
-632
-633
-634
-635
-636
-637
-638
-639
-640
-641
-642
-643
-644
-645
-646
-647
-648
-649
-650
-651
-652
-653
-654
-655
-656
-657
-658
-659
-660
-661
-662
-663
-664
-665
-666
-667
-668
-669
-670
-671
-672
-673
-674
-675
-676
-677
-678
-679
-680
-681
-682
-683
-684
-685
-686
-687
-688
-689
-690
-691
-692
-693
-694
-695
-696
-697
-698
-699
-700
-701
-702
-703
-704
-705
-706
-707
-708
-709
-710
-711
-712
-713
-714
-715
-716
-717
-718
-719
-720
-721
-722
-723
-724
-725
-726
-727
-728
-729
-730
-731
-732
-733
-734
-735
-736
-737
-738
-739
-740
-741
-742
-743
-744
-745
-746
-747
-748
-749
-750
-751
-752
-753
-754
-755
-756
-757
-758
-759
-760
-761
-762
-763
-764
-765
-766
-767
-768
-769
-770
-771
-772
-773
-774
-775
-776
-777
-778
-779
-780
-781
-782
-783
-784
-785
-786
-787
-788
-789
-790
-791
-792
-793
-794
-795
-796
-797
-798
-799
-800
-801
-802
-803
-804
-805
-806
-807
-808
-809
-810
-811
-812
-813
-814
-815
-816
-817
-818
-819
-820
-821
-822
-823
-824
-825
-826
-827
-828
-829
-830
-831
-832
-833
-834
-835
-836
-837
-838
-839
-840
-841
-842
-843
-844
-845
-846
-847
-848
-849
-850
-851
-852
-853
-854
-855
-856
-857
-858
-859
-860
-861
-862
-863
-864
-865
-866
-867
-868
-869
-870
-871
-872
-873
-874
-875
-876
-877
-878
-879
-880
-881
-882
-883
-884
-885
-886
-887
-888
-889
-890
-891
-892
-893
-894
-895
-896
-897
-898
-899
-900
-901
-902
-903
-904
-905
-906
-907
-908
-909
-910
-911
-912
-913
-914
-915
-916
-917
-918
-919</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
-<a name="line-2"></a><span class="cm"> *</span>
-<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
-<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
-<a name="line-5"></a><span class="cm"> *</span>
-<a name="line-6"></a><span class="cm"> * Date : 2003-08-03</span>
-<a name="line-7"></a><span class="cm"> * Description : setup Metadata tab.</span>
-<a name="line-8"></a><span class="cm"> *</span>
-<a name="line-9"></a><span class="cm"> * Copyright (C) 2003-2004 by Ralf Holzer &lt;ralf at well dot com&gt;</span>
-<a name="line-10"></a><span class="cm"> * Copyright (C) 2003-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&gt;</span>
-<a name="line-11"></a><span class="cm"> * Copyright (C) 2009-2012 by Marcel Wiesweg &lt;marcel dot wiesweg at gmx dot de&gt;</span>
-<a name="line-12"></a><span class="cm"> * Copyright (C) 2017 by Simon Frei &lt;freisim93 at gmail dot com&gt;</span>
-<a name="line-13"></a><span class="cm"> *</span>
-<a name="line-14"></a><span class="cm"> * This program is free software; you can redistribute it</span>
-<a name="line-15"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
-<a name="line-16"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
-<a name="line-17"></a><span class="cm"> * either version 2, or (at your option)</span>
-<a name="line-18"></a><span class="cm"> * any later version.</span>
-<a name="line-19"></a><span class="cm"> *</span>
-<a name="line-20"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
-<a name="line-21"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
-<a name="line-22"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
-<a name="line-23"></a><span class="cm"> * GNU General Public License for more details.</span>
-<a name="line-24"></a><span class="cm"> *</span>
-<a name="line-25"></a><span class="cm"> * ============================================================ */</span>
-<a name="line-26"></a>
-<a name="line-27"></a><span class="cp">#include</span> <span class="cpf">&quot;setupmetadata.h&quot;</span><span class="cp"></span>
-<a name="line-28"></a>
-<a name="line-29"></a><span class="c1">// Qt includes</span>
-<a name="line-30"></a>
-<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QApplication&gt;</span><span class="cp"></span>
-<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QButtonGroup&gt;</span><span class="cp"></span>
-<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QCheckBox&gt;</span><span class="cp"></span>
-<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QComboBox&gt;</span><span class="cp"></span>
-<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QFrame&gt;</span><span class="cp"></span>
-<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QGridLayout&gt;</span><span class="cp"></span>
-<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&lt;QGroupBox&gt;</span><span class="cp"></span>
-<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&lt;QIcon&gt;</span><span class="cp"></span>
-<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&lt;QLabel&gt;</span><span class="cp"></span>
-<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&lt;QLineEdit&gt;</span><span class="cp"></span>
-<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&lt;QMessageBox&gt;</span><span class="cp"></span>
-<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&lt;QPointer&gt;</span><span class="cp"></span>
-<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&lt;QRadioButton&gt;</span><span class="cp"></span>
-<a name="line-44"></a><span class="cp">#include</span> <span class="cpf">&lt;QStandardPaths&gt;</span><span class="cp"></span>
-<a name="line-45"></a><span class="cp">#include</span> <span class="cpf">&lt;QStyle&gt;</span><span class="cp"></span>
-<a name="line-46"></a><span class="cp">#include</span> <span class="cpf">&lt;QToolButton&gt;</span><span class="cp"></span>
-<a name="line-47"></a><span class="cp">#include</span> <span class="cpf">&lt;QVBoxLayout&gt;</span><span class="cp"></span>
-<a name="line-48"></a>
-<a name="line-49"></a><span class="c1">// KDE includes</span>
-<a name="line-50"></a>
-<a name="line-51"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
-<a name="line-52"></a>
-<a name="line-53"></a><span class="c1">// Local includes</span>
-<a name="line-54"></a>
-<a name="line-55"></a><span class="cp">#include</span> <span class="cpf">&quot;advancedmetadatatab.h&quot;</span><span class="cp"></span>
-<a name="line-56"></a><span class="cp">#include</span> <span class="cpf">&quot;applicationsettings.h&quot;</span><span class="cp"></span>
-<a name="line-57"></a><span class="cp">#include</span> <span class="cpf">&quot;dactivelabel.h&quot;</span><span class="cp"></span>
-<a name="line-58"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_config.h&quot;</span><span class="cp"></span>
-<a name="line-59"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
-<a name="line-60"></a><span class="cp">#include</span> <span class="cpf">&quot;metaengine.h&quot;</span><span class="cp"></span>
-<a name="line-61"></a><span class="cp">#include</span> <span class="cpf">&quot;metadatapanel.h&quot;</span><span class="cp"></span>
-<a name="line-62"></a><span class="cp">#include</span> <span class="cpf">&quot;metaenginesettings.h&quot;</span><span class="cp"></span>
-<a name="line-63"></a><span class="cp">#include</span> <span class="cpf">&quot;setuputils.h&quot;</span><span class="cp"></span>
-<a name="line-64"></a>
-<a name="line-65"></a><span class="k">namespace</span> <span class="n">Digikam</span>
-<a name="line-66"></a><span class="p">{</span>
-<a name="line-67"></a>
-<a name="line-68"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">SetupMetadata</span><span class="o">::</span><span class="n">Private</span>
-<a name="line-69"></a><span class="p">{</span>
-<a name="line-70"></a><span class="k">public</span><span class="o">:</span>
-<a name="line-71"></a>
-<a name="line-72"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
-<a name="line-73"></a> <span class="o">:</span> <span class="n">exifAutoRotateOriginal</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
-<a name="line-74"></a> <span class="n">exifAutoRotateShowedInfo</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
-<a name="line-75"></a> <span class="n">clearMetadataShowedInfo</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
-<a name="line-76"></a> <span class="n">fieldsGroup</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-77"></a> <span class="n">readWriteGroup</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-78"></a> <span class="n">rotationGroup</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-79"></a> <span class="n">rotationAdvGroup</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-80"></a> <span class="n">saveTagsBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-81"></a> <span class="n">saveCommentsBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-82"></a> <span class="n">saveRatingBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-83"></a> <span class="n">savePickLabelBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-84"></a> <span class="n">saveColorLabelBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-85"></a> <span class="n">saveDateTimeBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-86"></a> <span class="n">saveTemplateBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-87"></a> <span class="n">saveFaceTags</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-88"></a> <span class="n">useLazySync</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-89"></a> <span class="n">writeRawFilesBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-90"></a> <span class="n">writeXMPSidecarBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-91"></a> <span class="n">readXMPSidecarBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-92"></a> <span class="n">sidecarFileNameBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-93"></a> <span class="n">updateFileTimeStampBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-94"></a> <span class="n">rescanImageIfModifiedBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-95"></a> <span class="n">clearMetadataIfRescanBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-96"></a> <span class="n">writingModeCombo</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-97"></a> <span class="n">rotateByFlag</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-98"></a> <span class="n">rotateByContents</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-99"></a> <span class="n">allowRotateByMetadata</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-100"></a> <span class="n">allowLossyRotate</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-101"></a> <span class="n">exifRotateBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-102"></a> <span class="n">exifSetOrientationBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-103"></a> <span class="n">saveToBalooBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-104"></a> <span class="n">readFromBalooBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-105"></a> <span class="n">tab</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-106"></a> <span class="n">displaySubTab</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-107"></a> <span class="n">tagsCfgPanel</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-108"></a> <span class="n">advTab</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-109"></a> <span class="n">extensionsEdit</span><span class="p">(</span><span class="k">nullptr</span><span class="p">)</span>
-<a name="line-110"></a> <span class="p">{</span>
-<a name="line-111"></a> <span class="p">}</span>
-<a name="line-112"></a>
-<a name="line-113"></a> <span class="kt">bool</span> <span class="n">exifAutoRotateOriginal</span><span class="p">;</span>
-<a name="line-114"></a> <span class="kt">bool</span> <span class="n">exifAutoRotateShowedInfo</span><span class="p">;</span>
-<a name="line-115"></a> <span class="kt">bool</span> <span class="n">clearMetadataShowedInfo</span><span class="p">;</span>
-<a name="line-116"></a>
-<a name="line-117"></a> <span class="n">QGroupBox</span><span class="o">*</span> <span class="n">fieldsGroup</span><span class="p">;</span>
-<a name="line-118"></a> <span class="n">QGroupBox</span><span class="o">*</span> <span class="n">readWriteGroup</span><span class="p">;</span>
-<a name="line-119"></a> <span class="n">QGroupBox</span><span class="o">*</span> <span class="n">rotationGroup</span><span class="p">;</span>
-<a name="line-120"></a> <span class="n">QGroupBox</span><span class="o">*</span> <span class="n">rotationAdvGroup</span><span class="p">;</span>
-<a name="line-121"></a>
-<a name="line-122"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">saveTagsBox</span><span class="p">;</span>
-<a name="line-123"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">saveCommentsBox</span><span class="p">;</span>
-<a name="line-124"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">saveRatingBox</span><span class="p">;</span>
-<a name="line-125"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">savePickLabelBox</span><span class="p">;</span>
-<a name="line-126"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">saveColorLabelBox</span><span class="p">;</span>
-<a name="line-127"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">saveDateTimeBox</span><span class="p">;</span>
-<a name="line-128"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">saveTemplateBox</span><span class="p">;</span>
-<a name="line-129"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">saveFaceTags</span><span class="p">;</span>
-<a name="line-130"></a>
-<a name="line-131"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">useLazySync</span><span class="p">;</span>
-<a name="line-132"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">writeRawFilesBox</span><span class="p">;</span>
-<a name="line-133"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">writeXMPSidecarBox</span><span class="p">;</span>
-<a name="line-134"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">readXMPSidecarBox</span><span class="p">;</span>
-<a name="line-135"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">sidecarFileNameBox</span><span class="p">;</span>
-<a name="line-136"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">updateFileTimeStampBox</span><span class="p">;</span>
-<a name="line-137"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">rescanImageIfModifiedBox</span><span class="p">;</span>
-<a name="line-138"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">clearMetadataIfRescanBox</span><span class="p">;</span>
-<a name="line-139"></a> <span class="n">QComboBox</span><span class="o">*</span> <span class="n">writingModeCombo</span><span class="p">;</span>
-<a name="line-140"></a>
-<a name="line-141"></a> <span class="n">QRadioButton</span><span class="o">*</span> <span class="n">rotateByFlag</span><span class="p">;</span>
-<a name="line-142"></a> <span class="n">QRadioButton</span><span class="o">*</span> <span class="n">rotateByContents</span><span class="p">;</span>
-<a name="line-143"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">allowRotateByMetadata</span><span class="p">;</span>
-<a name="line-144"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">allowLossyRotate</span><span class="p">;</span>
-<a name="line-145"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">exifRotateBox</span><span class="p">;</span>
-<a name="line-146"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">exifSetOrientationBox</span><span class="p">;</span>
-<a name="line-147"></a>
-<a name="line-148"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">saveToBalooBox</span><span class="p">;</span>
-<a name="line-149"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">readFromBalooBox</span><span class="p">;</span>
-<a name="line-150"></a>
-<a name="line-151"></a> <span class="n">QTabWidget</span><span class="o">*</span> <span class="n">tab</span><span class="p">;</span>
-<a name="line-152"></a> <span class="n">QTabWidget</span><span class="o">*</span> <span class="n">displaySubTab</span><span class="p">;</span>
-<a name="line-153"></a>
-<a name="line-154"></a> <span class="n">MetadataPanel</span><span class="o">*</span> <span class="n">tagsCfgPanel</span><span class="p">;</span>
-<a name="line-155"></a> <span class="n">AdvancedMetadataTab</span><span class="o">*</span> <span class="n">advTab</span><span class="p">;</span>
-<a name="line-156"></a>
-<a name="line-157"></a> <span class="n">QLineEdit</span><span class="o">*</span> <span class="n">extensionsEdit</span><span class="p">;</span>
-<a name="line-158"></a><span class="p">};</span>
-<a name="line-159"></a>
-<a name="line-160"></a><span class="n">SetupMetadata</span><span class="o">::</span><span class="n">SetupMetadata</span><span class="p">(</span><span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span><span class="p">)</span>
-<a name="line-161"></a> <span class="o">:</span> <span class="n">QScrollArea</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span>
-<a name="line-162"></a> <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">Private</span><span class="p">)</span>
-<a name="line-163"></a><span class="p">{</span>
-<a name="line-164"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QTabWidget</span><span class="p">(</span><span class="n">viewport</span><span class="p">());</span>
-<a name="line-165"></a> <span class="n">setWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span><span class="p">);</span>
-<a name="line-166"></a> <span class="n">setWidgetResizable</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-167"></a>
-<a name="line-168"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">panel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QWidget</span><span class="p">;</span>
-<a name="line-169"></a> <span class="n">QVBoxLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">mainLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QVBoxLayout</span><span class="p">;</span>
-<a name="line-170"></a>
-<a name="line-171"></a> <span class="c1">// --------------------------------------------------------</span>
-<a name="line-172"></a>
-<a name="line-173"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fieldsGroup</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGroupBox</span><span class="p">;</span>
-<a name="line-174"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">fieldsLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">;</span>
-<a name="line-175"></a>
-<a name="line-176"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fieldsGroup</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">xi18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
-<a name="line-177"></a> <span class="s">&quot;&lt;para&gt;In addition to the pixel content, image files usually &quot;</span>
-<a name="line-178"></a> <span class="s">&quot;contain a variety of metadata. A lot of the parameters you can use &quot;</span>
-<a name="line-179"></a> <span class="s">&quot;in digiKam to manage files, such as rating or comment, can be written &quot;</span>
-<a name="line-180"></a> <span class="s">&quot;to the files&#39; metadata.&lt;/para&gt; &quot;</span>
-<a name="line-181"></a> <span class="s">&quot;&lt;para&gt;Storing in metadata allows one to preserve this information &quot;</span>
-<a name="line-182"></a> <span class="s">&quot;when moving or sending the files to different systems.&lt;/para&gt;&quot;</span><span class="p">));</span>
-<a name="line-183"></a>
-<a name="line-184"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">fieldsIconLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">;</span>
-<a name="line-185"></a> <span class="n">fieldsIconLabel</span><span class="o">-&gt;</span><span class="n">setPixmap</span><span class="p">(</span><span class="n">QIcon</span><span class="o">::</span><span class="n">fromTheme</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;format-list-unordered&quot;</span><span class="p">)).</span><span class="n">pixmap</span><span class="p">(</span><span class="mi">32</span><span class="p">));</span>
-<a name="line-186"></a>
-<a name="line-187"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">fieldsLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@label&quot;</span><span class="p">,</span> <span class="s">&quot;Write This Information to the Metadata&quot;</span><span class="p">));</span>
-<a name="line-188"></a>
-<a name="line-189"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTagsBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
-<a name="line-190"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTagsBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Image tags&quot;</span><span class="p">));</span>
-<a name="line-191"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTagsBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span> <span class="s">&quot;Turn on this option to store the item tags &quot;</span>
-<a name="line-192"></a> <span class="s">&quot;in the XMP and IPTC tags.&quot;</span><span class="p">));</span>
-<a name="line-193"></a>
-<a name="line-194"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveCommentsBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
-<a name="line-195"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveCommentsBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Captions and title&quot;</span><span class="p">));</span>
-<a name="line-196"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveCommentsBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span> <span class="s">&quot;Turn on this option to store item caption and title &quot;</span>
-<a name="line-197"></a> <span class="s">&quot;in the JFIF Comment section, the EXIF tag, the XMP tag, &quot;</span>
-<a name="line-198"></a> <span class="s">&quot;and the IPTC tag.&quot;</span><span class="p">));</span>
-<a name="line-199"></a>
-<a name="line-200"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveRatingBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
-<a name="line-201"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveRatingBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Rating&quot;</span><span class="p">));</span>
-<a name="line-202"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveRatingBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span> <span class="s">&quot;Turn on this option to store the item rating &quot;</span>
-<a name="line-203"></a> <span class="s">&quot;in the EXIF tag and the XMP tags.&quot;</span><span class="p">));</span>
-<a name="line-204"></a>
-<a name="line-205"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">savePickLabelBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
-<a name="line-206"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">savePickLabelBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Pick label&quot;</span><span class="p">));</span>
-<a name="line-207"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">savePickLabelBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span> <span class="s">&quot;Turn on this option to store the item pick label &quot;</span>
-<a name="line-208"></a> <span class="s">&quot;in the XMP tags.&quot;</span><span class="p">));</span>
-<a name="line-209"></a>
-<a name="line-210"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveColorLabelBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
-<a name="line-211"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveColorLabelBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Color label&quot;</span><span class="p">));</span>
-<a name="line-212"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveColorLabelBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span> <span class="s">&quot;Turn on this option to store the item color label &quot;</span>
-<a name="line-213"></a> <span class="s">&quot;in the XMP tags.&quot;</span><span class="p">));</span>
-<a name="line-214"></a>
-<a name="line-215"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveDateTimeBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
-<a name="line-216"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveDateTimeBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Timestamps&quot;</span><span class="p">));</span>
-<a name="line-217"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveDateTimeBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span> <span class="s">&quot;Turn on this option to store the item date and time &quot;</span>
-<a name="line-218"></a> <span class="s">&quot;in the EXIF, XMP, and IPTC tags.&quot;</span><span class="p">));</span>
-<a name="line-219"></a>
-<a name="line-220"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTemplateBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
-<a name="line-221"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTemplateBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Metadata templates (Copyright etc.)&quot;</span><span class="p">));</span>
-<a name="line-222"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTemplateBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span> <span class="s">&quot;Turn on this option to store the metadata &quot;</span>
-<a name="line-223"></a> <span class="s">&quot;template in the XMP and the IPTC tags. &quot;</span>
-<a name="line-224"></a> <span class="s">&quot;You can set template values to Template setup page.&quot;</span><span class="p">));</span>
-<a name="line-225"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveFaceTags</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
-<a name="line-226"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveFaceTags</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Face Tags (including face areas)&quot;</span><span class="p">));</span>
-<a name="line-227"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveFaceTags</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span> <span class="s">&quot;Turn on this option to store face tags &quot;</span>
-<a name="line-228"></a> <span class="s">&quot;with face rectangles in the XMP tags.&quot;</span><span class="p">));</span>
-<a name="line-229"></a>
-<a name="line-230"></a> <span class="n">fieldsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">fieldsIconLabel</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-231"></a> <span class="n">fieldsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">fieldsLabel</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-232"></a> <span class="n">fieldsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTagsBox</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-233"></a> <span class="n">fieldsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">saveCommentsBox</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-234"></a> <span class="n">fieldsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">saveRatingBox</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-235"></a> <span class="n">fieldsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">savePickLabelBox</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-236"></a> <span class="n">fieldsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">saveColorLabelBox</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-237"></a> <span class="n">fieldsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">saveDateTimeBox</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-238"></a> <span class="n">fieldsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTemplateBox</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-239"></a> <span class="n">fieldsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">saveFaceTags</span><span class="p">,</span> <span class="mi">9</span> <span class="p">,</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-240"></a> <span class="n">fieldsLayout</span><span class="o">-&gt;</span><span class="n">setColumnStretch</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
-<a name="line-241"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fieldsGroup</span><span class="o">-&gt;</span><span class="n">setLayout</span><span class="p">(</span><span class="n">fieldsLayout</span><span class="p">);</span>
-<a name="line-242"></a>
-<a name="line-243"></a> <span class="c1">// --------------------------------------------------------</span>
-<a name="line-244"></a>
-<a name="line-245"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readWriteGroup</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGroupBox</span><span class="p">;</span>
-<a name="line-246"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">readWriteLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">;</span>
-<a name="line-247"></a>
-<a name="line-248"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">readWriteIconLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">;</span>
-<a name="line-249"></a> <span class="n">readWriteIconLabel</span><span class="o">-&gt;</span><span class="n">setPixmap</span><span class="p">(</span><span class="n">QIcon</span><span class="o">::</span><span class="n">fromTheme</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;document-open&quot;</span><span class="p">)).</span><span class="n">pixmap</span><span class="p">(</span><span class="mi">32</span><span class="p">));</span>
-<a name="line-250"></a>
-<a name="line-251"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">readWriteLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@label&quot;</span><span class="p">,</span> <span class="s">&quot;Reading and Writing Metadata&quot;</span><span class="p">));</span>
-<a name="line-252"></a>
-<a name="line-253"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">useLazySync</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
-<a name="line-254"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">useLazySync</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Use lazy synchronization&quot;</span><span class="p">));</span>
-<a name="line-255"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">useLazySync</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
-<a name="line-256"></a> <span class="s">&quot;Instead of synchronizing metadata, just schedule it for synchronization.&quot;</span>
-<a name="line-257"></a> <span class="s">&quot;Synchronization can be done later by triggering the apply pending, or at digikam exit&quot;</span><span class="p">));</span>
-<a name="line-258"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeRawFilesBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
-<a name="line-259"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeRawFilesBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;If possible write Metadata to RAW files (experimental)&quot;</span><span class="p">));</span>
-<a name="line-260"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeRawFilesBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span> <span class="s">&quot;Turn on this option to write metadata into RAW TIFF/EP files. &quot;</span>
-<a name="line-261"></a> <span class="s">&quot;This feature requires the Exiv2 shared library, version &gt;= 0.18.0. It is still &quot;</span>
-<a name="line-262"></a> <span class="s">&quot;experimental, and is disabled by default.&quot;</span><span class="p">));</span>
-<a name="line-263"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeRawFilesBox</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">MetaEngine</span><span class="o">::</span><span class="n">supportMetadataWritting</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;image/x-raw&quot;</span><span class="p">)));</span>
-<a name="line-264"></a>
-<a name="line-265"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">updateFileTimeStampBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
-<a name="line-266"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">updateFileTimeStampBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;&amp;Update file modification timestamp when files are modified&quot;</span><span class="p">));</span>
-<a name="line-267"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">updateFileTimeStampBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
-<a name="line-268"></a> <span class="s">&quot;Turn off this option to not update file timestamps when files are changed as &quot;</span>
-<a name="line-269"></a> <span class="s">&quot;when you update metadata or image data. Note: disabling this option can &quot;</span>
-<a name="line-270"></a> <span class="s">&quot;introduce some dysfunctions with applications which use file timestamps &quot;</span>
-<a name="line-271"></a> <span class="s">&quot;properties to detect file modifications automatically.&quot;</span><span class="p">));</span>
-<a name="line-272"></a>
-<a name="line-273"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rescanImageIfModifiedBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
-<a name="line-274"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rescanImageIfModifiedBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;&amp;Rescan file when files are modified&quot;</span><span class="p">));</span>
-<a name="line-275"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rescanImageIfModifiedBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
-<a name="line-276"></a> <span class="s">&quot;Turning this option on, will force digiKam to rescan files that has been &quot;</span>
-<a name="line-277"></a> <span class="s">&quot;modified outside digiKam. If a file has changed it is file size or if &quot;</span>
-<a name="line-278"></a> <span class="s">&quot;the last modified timestamp has changed, a rescan of that &quot;</span>
-<a name="line-279"></a> <span class="s">&quot;file will be performed when digiKam starts.&quot;</span><span class="p">));</span>
-<a name="line-280"></a>
-<a name="line-281"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">clearMetadataIfRescanBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
-<a name="line-282"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">clearMetadataIfRescanBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;&amp;Clean up the metadata from the database when rescan files&quot;</span><span class="p">));</span>
-<a name="line-283"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">clearMetadataIfRescanBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
-<a name="line-284"></a> <span class="s">&quot;Turning this option on, will force digiKam to delete the file metadata &quot;</span>
-<a name="line-285"></a> <span class="s">&quot;contained in the database before the file is rescanned. WARNING: &quot;</span>
-<a name="line-286"></a> <span class="s">&quot;if your metadata has been written to the database only and not &quot;</span>
-<a name="line-287"></a> <span class="s">&quot;to the file or sidecar, you will be able to lose inserted &quot;</span>
-<a name="line-288"></a> <span class="s">&quot;metadata such as tags, keywords, or geographic coordinates.&quot;</span><span class="p">));</span>
-<a name="line-289"></a>
-<a name="line-290"></a> <span class="n">readWriteLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">readWriteIconLabel</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-291"></a> <span class="n">readWriteLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">readWriteLabel</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-292"></a> <span class="n">readWriteLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">useLazySync</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-293"></a> <span class="n">readWriteLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">writeRawFilesBox</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-294"></a> <span class="n">readWriteLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">updateFileTimeStampBox</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-295"></a> <span class="n">readWriteLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rescanImageIfModifiedBox</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-296"></a> <span class="n">readWriteLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">clearMetadataIfRescanBox</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-297"></a> <span class="n">readWriteLayout</span><span class="o">-&gt;</span><span class="n">setColumnStretch</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
-<a name="line-298"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readWriteGroup</span><span class="o">-&gt;</span><span class="n">setLayout</span><span class="p">(</span><span class="n">readWriteLayout</span><span class="p">);</span>
-<a name="line-299"></a>
-<a name="line-300"></a> <span class="c1">// --------------------------------------------------------</span>
-<a name="line-301"></a>
-<a name="line-302"></a> <span class="n">QFrame</span><span class="o">*</span> <span class="k">const</span> <span class="n">infoBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QFrame</span><span class="p">;</span>
-<a name="line-303"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">infoBoxGrid</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">;</span>
-<a name="line-304"></a> <span class="n">infoBox</span><span class="o">-&gt;</span><span class="n">setFrameStyle</span><span class="p">(</span><span class="n">QFrame</span><span class="o">::</span><span class="n">StyledPanel</span> <span class="o">|</span> <span class="n">QFrame</span><span class="o">::</span><span class="n">Raised</span><span class="p">);</span>
-<a name="line-305"></a>
-<a name="line-306"></a> <span class="n">DActiveLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">exiv2LogoLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DActiveLabel</span><span class="p">(</span><span class="n">QUrl</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://www.exiv2.org&quot;</span><span class="p">)),</span>
-<a name="line-307"></a> <span class="n">QStandardPaths</span><span class="o">::</span><span class="n">locate</span><span class="p">(</span><span class="n">QStandardPaths</span><span class="o">::</span><span class="n">GenericDataLocation</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;digikam/data/logo-exiv2.png&quot;</span><span class="p">)),</span>
-<a name="line-308"></a> <span class="n">infoBox</span><span class="p">);</span>
-<a name="line-309"></a> <span class="n">exiv2LogoLabel</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Visit Exiv2 project website&quot;</span><span class="p">));</span>
-<a name="line-310"></a>
-<a name="line-311"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">explanation</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">infoBox</span><span class="p">);</span>
-<a name="line-312"></a> <span class="n">explanation</span><span class="o">-&gt;</span><span class="n">setOpenExternalLinks</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-313"></a> <span class="n">explanation</span><span class="o">-&gt;</span><span class="n">setWordWrap</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-314"></a> <span class="n">QString</span> <span class="n">txt</span><span class="p">;</span>
-<a name="line-315"></a>
-<a name="line-316"></a> <span class="n">txt</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;p&gt;&lt;a href=&#39;https://en.wikipedia.org/wiki/Exif&#39;&gt;EXIF&lt;/a&gt; - &quot;</span>
-<a name="line-317"></a> <span class="s">&quot;a standard used by most digital cameras today to store technical &quot;</span>
-<a name="line-318"></a> <span class="s">&quot;information (like aperture and shutter speed) about an image.&lt;/p&gt;&quot;</span><span class="p">));</span>
-<a name="line-319"></a>
-<a name="line-320"></a> <span class="n">txt</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;p&gt;&lt;a href=&#39;https://en.wikipedia.org/wiki/IPTC_Information_Interchange_Model&#39;&gt;IPTC&lt;/a&gt; - &quot;</span>
-<a name="line-321"></a> <span class="s">&quot;an older standard used in digital photography to store &quot;</span>
-<a name="line-322"></a> <span class="s">&quot;photographer information in images.&lt;/p&gt;&quot;</span><span class="p">));</span>
-<a name="line-323"></a>
-<a name="line-324"></a> <span class="k">if</span> <span class="p">(</span><span class="n">MetaEngine</span><span class="o">::</span><span class="n">supportXmp</span><span class="p">())</span>
-<a name="line-325"></a> <span class="n">txt</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;p&gt;&lt;a href=&#39;https://en.wikipedia.org/wiki/Extensible_Metadata_Platform&#39;&gt;XMP&lt;/a&gt; - &quot;</span>
-<a name="line-326"></a> <span class="s">&quot;a new standard used in digital photography, designed to replace IPTC.&lt;/p&gt;&quot;</span><span class="p">));</span>
-<a name="line-327"></a>
-<a name="line-328"></a> <span class="n">explanation</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">txt</span><span class="p">);</span>
-<a name="line-329"></a>
-<a name="line-330"></a> <span class="n">infoBoxGrid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">exiv2LogoLabel</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-331"></a> <span class="n">infoBoxGrid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">explanation</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
-<a name="line-332"></a> <span class="n">infoBoxGrid</span><span class="o">-&gt;</span><span class="n">setColumnStretch</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
-<a name="line-333"></a> <span class="n">infoBoxGrid</span><span class="o">-&gt;</span><span class="n">setRowStretch</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
-<a name="line-334"></a> <span class="n">infoBoxGrid</span><span class="o">-&gt;</span><span class="n">setSpacing</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-335"></a> <span class="n">infoBox</span><span class="o">-&gt;</span><span class="n">setLayout</span><span class="p">(</span><span class="n">infoBoxGrid</span><span class="p">);</span>
-<a name="line-336"></a>
-<a name="line-337"></a> <span class="c1">// --------------------------------------------------------</span>
-<a name="line-338"></a>
-<a name="line-339"></a> <span class="n">mainLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fieldsGroup</span><span class="p">);</span>
-<a name="line-340"></a> <span class="n">mainLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">readWriteGroup</span><span class="p">);</span>
-<a name="line-341"></a> <span class="n">mainLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">infoBox</span><span class="p">);</span>
-<a name="line-342"></a> <span class="n">panel</span><span class="o">-&gt;</span><span class="n">setLayout</span><span class="p">(</span><span class="n">mainLayout</span><span class="p">);</span>
-<a name="line-343"></a>
-<a name="line-344"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span><span class="o">-&gt;</span><span class="n">insertTab</span><span class="p">(</span><span class="n">Behavior</span><span class="p">,</span> <span class="n">panel</span><span class="p">,</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@title:tab&quot;</span><span class="p">,</span> <span class="s">&quot;Behavior&quot;</span><span class="p">));</span>
-<a name="line-345"></a>
-<a name="line-346"></a> <span class="c1">// --------------------------------------------------------</span>
-<a name="line-347"></a>
-<a name="line-348"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">rotationPanel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span><span class="p">);</span>
-<a name="line-349"></a> <span class="n">QVBoxLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">rotationLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QVBoxLayout</span><span class="p">;</span>
-<a name="line-350"></a>
-<a name="line-351"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotationGroup</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGroupBox</span><span class="p">;</span>
-<a name="line-352"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">rotationGroupLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">;</span>
-<a name="line-353"></a>
-<a name="line-354"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">rotationExplanation</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@label&quot;</span><span class="p">,</span> <span class="s">&quot;When rotating a file&quot;</span><span class="p">));</span>
-<a name="line-355"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">rotationIcon</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">;</span>
-<a name="line-356"></a> <span class="n">rotationIcon</span><span class="o">-&gt;</span><span class="n">setPixmap</span><span class="p">(</span><span class="n">QIcon</span><span class="o">::</span><span class="n">fromTheme</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;transform-rotate&quot;</span><span class="p">)).</span><span class="n">pixmap</span><span class="p">(</span><span class="mi">32</span><span class="p">));</span>
-<a name="line-357"></a>
-<a name="line-358"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByFlag</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QRadioButton</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:radio&quot;</span><span class="p">,</span> <span class="s">&quot;Rotate by only setting a flag&quot;</span><span class="p">));</span>
-<a name="line-359"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByContents</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QRadioButton</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:radio&quot;</span><span class="p">,</span> <span class="s">&quot;Rotate by changing the content if possible&quot;</span><span class="p">));</span>
-<a name="line-360"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowLossyRotate</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Even allow lossy rotation if necessary&quot;</span><span class="p">));</span>
-<a name="line-361"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowRotateByMetadata</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Write flag to metadata if possible&quot;</span><span class="p">));</span>
-<a name="line-362"></a>
-<a name="line-363"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByContents</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-364"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowLossyRotate</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
-<a name="line-365"></a>
-<a name="line-366"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByFlag</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-367"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByContents</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-368"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowLossyRotate</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-369"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowLossyRotate</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-370"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowRotateByMetadata</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-371"></a>
-<a name="line-372"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByFlag</span><span class="o">-&gt;</span><span class="n">setToolTip</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:tooltip&quot;</span><span class="p">,</span>
-<a name="line-373"></a> <span class="s">&quot;Rotate files only by changing a flag, not touching the pixel data&quot;</span><span class="p">));</span>
-<a name="line-374"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByFlag</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">xi18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
-<a name="line-375"></a> <span class="s">&quot;&lt;para&gt;A file can be rotated in two ways:&lt;nl/&gt; &quot;</span>
-<a name="line-376"></a> <span class="s">&quot;You can change the contents, rearranging the individual pixels of the image data.&lt;nl/&gt; &quot;</span>
-<a name="line-377"></a> <span class="s">&quot;Or you can set a flag that the file is to be rotated before it is shown.&lt;/para&gt; &quot;</span>
-<a name="line-378"></a> <span class="s">&quot;&lt;para&gt;Select this option if you always want to set only a flag. &quot;</span>
-<a name="line-379"></a> <span class="s">&quot;This is less obtrusive, but requires support if the file is accessed with another software. &quot;</span>
-<a name="line-380"></a> <span class="s">&quot;Ensure to allow setting the flag in the metadata if you want to share your files &quot;</span>
-<a name="line-381"></a> <span class="s">&quot;outside digiKam.&lt;/para&gt;&quot;</span><span class="p">));</span>
-<a name="line-382"></a>
-<a name="line-383"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByContents</span><span class="o">-&gt;</span><span class="n">setToolTip</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:tooltip&quot;</span><span class="p">,</span>
-<a name="line-384"></a> <span class="s">&quot;If possible rotate files by changing the pixel data&quot;</span><span class="p">));</span>
-<a name="line-385"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByContents</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">xi18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
-<a name="line-386"></a> <span class="s">&quot;&lt;para&gt;A file can be rotated in two ways:&lt;nl/&gt; &quot;</span>
-<a name="line-387"></a> <span class="s">&quot;You can change the contents, rearranging the individual pixels of the image data.&lt;nl/&gt; &quot;</span>
-<a name="line-388"></a> <span class="s">&quot;Or you can set a flag that the file is to be rotated before it is shown.&lt;/para&gt; &quot;</span>
-<a name="line-389"></a> <span class="s">&quot;&lt;para&gt;Select this option if you want the file to be rotated by changing the content. &quot;</span>
-<a name="line-390"></a> <span class="s">&quot;This is a lossless operation for JPEG files. For other formats it is a lossy operation, &quot;</span>
-<a name="line-391"></a> <span class="s">&quot;which you need to enable explicitly. &quot;</span>
-<a name="line-392"></a> <span class="s">&quot;It is not support for RAW and other read-only formats, &quot;</span>
-<a name="line-393"></a> <span class="s">&quot;which will be rotated by flag only.&lt;/para&gt;&quot;</span><span class="p">));</span>
-<a name="line-394"></a>
-<a name="line-395"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowLossyRotate</span><span class="o">-&gt;</span><span class="n">setToolTip</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:tooltip&quot;</span><span class="p">,</span>
-<a name="line-396"></a> <span class="s">&quot;Rotate files by changing the pixel data even if the operation will incur quality loss&quot;</span><span class="p">));</span>
-<a name="line-397"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowLossyRotate</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
-<a name="line-398"></a> <span class="s">&quot;For some file formats which apply lossy compression, &quot;</span>
-<a name="line-399"></a> <span class="s">&quot;data will be lost each time the content is rotated. &quot;</span>
-<a name="line-400"></a> <span class="s">&quot;Check this option to allow lossy rotation. &quot;</span>
-<a name="line-401"></a> <span class="s">&quot;If not enabled, these files will be rotated by flag.&quot;</span><span class="p">));</span>
-<a name="line-402"></a>
-<a name="line-403"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowRotateByMetadata</span><span class="o">-&gt;</span><span class="n">setToolTip</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:tooltip&quot;</span><span class="p">,</span>
-<a name="line-404"></a> <span class="s">&quot;When rotating a file by setting a flag, also change this flag in the file&#39;s metadata&quot;</span><span class="p">));</span>
-<a name="line-405"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowRotateByMetadata</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
-<a name="line-406"></a> <span class="s">&quot;File metadata typically contains a flag describing &quot;</span>
-<a name="line-407"></a> <span class="s">&quot;that a file shall be shown rotated. &quot;</span>
-<a name="line-408"></a> <span class="s">&quot;Enable this option to allow editing this field. &quot;</span><span class="p">));</span>
-<a name="line-409"></a>
-<a name="line-410"></a> <span class="n">rotationGroupLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">rotationIcon</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-411"></a> <span class="n">rotationGroupLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">rotationExplanation</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
-<a name="line-412"></a> <span class="n">rotationGroupLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByFlag</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-413"></a> <span class="n">rotationGroupLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByContents</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-414"></a> <span class="n">rotationGroupLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">allowLossyRotate</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-415"></a> <span class="n">rotationGroupLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">allowRotateByMetadata</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-416"></a> <span class="n">rotationGroupLayout</span><span class="o">-&gt;</span><span class="n">setColumnStretch</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
-<a name="line-417"></a>
-<a name="line-418"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotationGroup</span><span class="o">-&gt;</span><span class="n">setLayout</span><span class="p">(</span><span class="n">rotationGroupLayout</span><span class="p">);</span>
-<a name="line-419"></a>
-<a name="line-420"></a> <span class="c1">// --------------------------------------------------------</span>
-<a name="line-421"></a>
-<a name="line-422"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotationAdvGroup</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGroupBox</span><span class="p">;</span>
-<a name="line-423"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">rotationAdvLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">;</span>
-<a name="line-424"></a>
-<a name="line-425"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">rotationAdvExpl</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@label&quot;</span><span class="p">,</span> <span class="s">&quot;Rotate actions&quot;</span><span class="p">));</span>
-<a name="line-426"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">rotationAdvIcon</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">;</span>
-<a name="line-427"></a> <span class="n">rotationAdvIcon</span><span class="o">-&gt;</span><span class="n">setPixmap</span><span class="p">(</span><span class="n">QIcon</span><span class="o">::</span><span class="n">fromTheme</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;configure&quot;</span><span class="p">)).</span><span class="n">pixmap</span><span class="p">(</span><span class="mi">32</span><span class="p">));</span>
-<a name="line-428"></a>
-<a name="line-429"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exifRotateBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
-<a name="line-430"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exifRotateBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Show images/thumbnails &amp;rotated according to orientation tag.&quot;</span><span class="p">));</span>
-<a name="line-431"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exifSetOrientationBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
-<a name="line-432"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exifSetOrientationBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Set orientation tag to normal after rotate/flip.&quot;</span><span class="p">));</span>
-<a name="line-433"></a>
-<a name="line-434"></a> <span class="n">rotationAdvLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">rotationAdvIcon</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-435"></a> <span class="n">rotationAdvLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">rotationAdvExpl</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-436"></a> <span class="n">rotationAdvLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">exifRotateBox</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-437"></a> <span class="n">rotationAdvLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">exifSetOrientationBox</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-438"></a> <span class="n">rotationAdvLayout</span><span class="o">-&gt;</span><span class="n">setColumnStretch</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
-<a name="line-439"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotationAdvGroup</span><span class="o">-&gt;</span><span class="n">setLayout</span><span class="p">(</span><span class="n">rotationAdvLayout</span><span class="p">);</span>
-<a name="line-440"></a>
-<a name="line-441"></a> <span class="c1">// --------------------------------------------------------</span>
-<a name="line-442"></a>
-<a name="line-443"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">rotationNote</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;b&gt;Note: These settings affect the album view &quot;</span>
-<a name="line-444"></a> <span class="s">&quot;and not the image editor. The image editor always &quot;</span>
-<a name="line-445"></a> <span class="s">&quot;changes the image data during the rotation.&lt;/b&gt;&quot;</span><span class="p">));</span>
-<a name="line-446"></a> <span class="n">rotationNote</span><span class="o">-&gt;</span><span class="n">setWordWrap</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-447"></a> <span class="n">rotationNote</span><span class="o">-&gt;</span><span class="n">setFrameStyle</span><span class="p">(</span><span class="n">QFrame</span><span class="o">::</span><span class="n">StyledPanel</span> <span class="o">|</span> <span class="n">QFrame</span><span class="o">::</span><span class="n">Raised</span><span class="p">);</span>
-<a name="line-448"></a>
-<a name="line-449"></a> <span class="c1">// --------------------------------------------------------</span>
-<a name="line-450"></a>
-<a name="line-451"></a> <span class="n">rotationLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rotationGroup</span><span class="p">);</span>
-<a name="line-452"></a> <span class="n">rotationLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rotationAdvGroup</span><span class="p">);</span>
-<a name="line-453"></a> <span class="n">rotationLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">rotationNote</span><span class="p">);</span>
-<a name="line-454"></a> <span class="n">rotationLayout</span><span class="o">-&gt;</span><span class="n">addStretch</span><span class="p">();</span>
-<a name="line-455"></a> <span class="n">rotationPanel</span><span class="o">-&gt;</span><span class="n">setLayout</span><span class="p">(</span><span class="n">rotationLayout</span><span class="p">);</span>
-<a name="line-456"></a>
-<a name="line-457"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span><span class="o">-&gt;</span><span class="n">insertTab</span><span class="p">(</span><span class="n">Rotation</span><span class="p">,</span> <span class="n">rotationPanel</span><span class="p">,</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@title:tab&quot;</span><span class="p">,</span> <span class="s">&quot;Rotation&quot;</span><span class="p">));</span>
-<a name="line-458"></a>
-<a name="line-459"></a> <span class="c1">// --------------------------------------------------------</span>
-<a name="line-460"></a>
-<a name="line-461"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">displayPanel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QWidget</span><span class="p">;</span>
-<a name="line-462"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">displayLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">;</span>
-<a name="line-463"></a>
-<a name="line-464"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">displayLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:label&quot;</span><span class="p">,</span> <span class="s">&quot;Select Metadata Fields to Be Displayed&quot;</span><span class="p">));</span>
-<a name="line-465"></a>
-<a name="line-466"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">displayIcon</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">;</span>
-<a name="line-467"></a> <span class="n">displayIcon</span><span class="o">-&gt;</span><span class="n">setPixmap</span><span class="p">(</span><span class="n">QIcon</span><span class="o">::</span><span class="n">fromTheme</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;view-list-tree&quot;</span><span class="p">)).</span><span class="n">pixmap</span><span class="p">(</span><span class="mi">32</span><span class="p">));</span>
-<a name="line-468"></a>
-<a name="line-469"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">displaySubTab</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QTabWidget</span><span class="p">;</span>
-<a name="line-470"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagsCfgPanel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">MetadataPanel</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">displaySubTab</span><span class="p">);</span>
-<a name="line-471"></a>
-<a name="line-472"></a> <span class="n">displayLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">displayIcon</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-473"></a> <span class="n">displayLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">displayLabel</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-474"></a> <span class="n">displayLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">displaySubTab</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-475"></a> <span class="n">displayLayout</span><span class="o">-&gt;</span><span class="n">setColumnStretch</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-476"></a>
-<a name="line-477"></a> <span class="n">displayPanel</span><span class="o">-&gt;</span><span class="n">setLayout</span><span class="p">(</span><span class="n">displayLayout</span><span class="p">);</span>
-<a name="line-478"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span><span class="o">-&gt;</span><span class="n">insertTab</span><span class="p">(</span><span class="n">Display</span><span class="p">,</span> <span class="n">displayPanel</span><span class="p">,</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@title:tab&quot;</span><span class="p">,</span> <span class="s">&quot;Views&quot;</span><span class="p">));</span>
-<a name="line-479"></a>
-<a name="line-480"></a> <span class="c1">// --------------------------------------------------------</span>
-<a name="line-481"></a>
-<a name="line-482"></a><span class="cp">#ifdef HAVE_KFILEMETADATA</span>
-<a name="line-483"></a>
-<a name="line-484"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">balooPanel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span><span class="p">);</span>
-<a name="line-485"></a> <span class="n">QVBoxLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">balooLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QVBoxLayout</span><span class="p">(</span><span class="n">balooPanel</span><span class="p">);</span>
-<a name="line-486"></a>
-<a name="line-487"></a> <span class="n">QGroupBox</span><span class="o">*</span> <span class="k">const</span> <span class="n">balooGroup</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGroupBox</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Baloo Desktop Search&quot;</span><span class="p">),</span> <span class="n">balooPanel</span><span class="p">);</span>
-<a name="line-488"></a> <span class="n">QVBoxLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">gLayout3</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QVBoxLayout</span><span class="p">(</span><span class="n">balooGroup</span><span class="p">);</span>
-<a name="line-489"></a>
-<a name="line-490"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveToBalooBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
-<a name="line-491"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveToBalooBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Store metadata from digiKam in Baloo&quot;</span><span class="p">));</span>
-<a name="line-492"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveToBalooBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Turn on this option to push rating, comments and tags &quot;</span>
-<a name="line-493"></a> <span class="s">&quot;from digiKam into the Baloo storage&quot;</span><span class="p">));</span>
-<a name="line-494"></a>
-<a name="line-495"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readFromBalooBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
-<a name="line-496"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readFromBalooBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Read metadata from Baloo&quot;</span><span class="p">));</span>
-<a name="line-497"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readFromBalooBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Turn on this option if you want to apply changes to &quot;</span>
-<a name="line-498"></a> <span class="s">&quot;rating, comments and tags made in Baloo to digiKam&#39;s metadata storage. &quot;</span>
-<a name="line-499"></a> <span class="s">&quot;Please note that image metadata will not be edited automatically.&quot;</span><span class="p">));</span>
-<a name="line-500"></a>
-<a name="line-501"></a> <span class="n">gLayout3</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">saveToBalooBox</span><span class="p">);</span>
-<a name="line-502"></a> <span class="n">gLayout3</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">readFromBalooBox</span><span class="p">);</span>
-<a name="line-503"></a>
-<a name="line-504"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span><span class="o">-&gt;</span><span class="n">insertTab</span><span class="p">(</span><span class="n">Baloo</span><span class="p">,</span> <span class="n">balooPanel</span><span class="p">,</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@title:tab&quot;</span><span class="p">,</span> <span class="s">&quot;Baloo&quot;</span><span class="p">));</span>
-<a name="line-505"></a>
-<a name="line-506"></a> <span class="c1">// --------------------------------------------------------</span>
-<a name="line-507"></a>
-<a name="line-508"></a> <span class="n">QFrame</span><span class="o">*</span> <span class="k">const</span> <span class="n">balooBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QFrame</span><span class="p">(</span><span class="n">balooPanel</span><span class="p">);</span>
-<a name="line-509"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">balooGrid</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">(</span><span class="n">balooBox</span><span class="p">);</span>
-<a name="line-510"></a> <span class="n">balooBox</span><span class="o">-&gt;</span><span class="n">setFrameStyle</span><span class="p">(</span><span class="n">QFrame</span><span class="o">::</span><span class="n">StyledPanel</span> <span class="o">|</span> <span class="n">QFrame</span><span class="o">::</span><span class="n">Raised</span><span class="p">);</span>
-<a name="line-511"></a>
-<a name="line-512"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">balooLogoLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">;</span>
-<a name="line-513"></a> <span class="n">balooLogoLabel</span><span class="o">-&gt;</span><span class="n">setPixmap</span><span class="p">(</span><span class="n">QIcon</span><span class="o">::</span><span class="n">fromTheme</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;baloo&quot;</span><span class="p">)).</span><span class="n">pixmap</span><span class="p">(</span><span class="mi">48</span><span class="p">));</span>
-<a name="line-514"></a>
-<a name="line-515"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">balooExplanation</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">balooBox</span><span class="p">);</span>
-<a name="line-516"></a> <span class="n">balooExplanation</span><span class="o">-&gt;</span><span class="n">setOpenExternalLinks</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-517"></a> <span class="n">balooExplanation</span><span class="o">-&gt;</span><span class="n">setWordWrap</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-518"></a> <span class="n">QString</span> <span class="n">balootxt</span><span class="p">;</span>
-<a name="line-519"></a>
-<a name="line-520"></a> <span class="n">balootxt</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;p&gt;&lt;a href=&#39;http://community.kde.org/Baloo&#39;&gt;Baloo&lt;/a&gt; &quot;</span>
-<a name="line-521"></a> <span class="s">&quot;provides the basis to handle all kinds of metadata on the KDE desktop in a generic fashion. &quot;</span>
-<a name="line-522"></a> <span class="s">&quot;It allows you to tag, rate and comment your files in KDE applications like Dolphin.&lt;/p&gt; &quot;</span>
-<a name="line-523"></a> <span class="s">&quot;&lt;p&gt;Please set here if you want to synchronize the metadata stored by digiKam desktop-wide with the &quot;</span>
-<a name="line-524"></a> <span class="s">&quot;Baloo Desktop Search.&lt;/p&gt; &quot;</span><span class="p">));</span>
-<a name="line-525"></a>
-<a name="line-526"></a> <span class="n">balooExplanation</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">balootxt</span><span class="p">);</span>
-<a name="line-527"></a>
-<a name="line-528"></a> <span class="n">balooGrid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">balooLogoLabel</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-529"></a> <span class="n">balooGrid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">balooExplanation</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
-<a name="line-530"></a> <span class="n">balooGrid</span><span class="o">-&gt;</span><span class="n">setColumnStretch</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
-<a name="line-531"></a> <span class="n">balooGrid</span><span class="o">-&gt;</span><span class="n">setSpacing</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
-<a name="line-532"></a>
-<a name="line-533"></a> <span class="c1">// --------------------------------------------------------</span>
-<a name="line-534"></a>
-<a name="line-535"></a> <span class="n">balooLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">balooGroup</span><span class="p">);</span>
-<a name="line-536"></a> <span class="n">balooLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">balooBox</span><span class="p">);</span>
-<a name="line-537"></a><span class="cm">/*</span>
-<a name="line-538"></a><span class="cm"> balooLayout-&gt;addWidget(d-&gt;resyncButton, 0, Qt::AlignRight);</span>
-<a name="line-539"></a><span class="cm">*/</span>
-<a name="line-540"></a> <span class="n">balooLayout</span><span class="o">-&gt;</span><span class="n">addStretch</span><span class="p">();</span>
-<a name="line-541"></a>
-<a name="line-542"></a><span class="cp">#endif </span><span class="c1">// HAVE_KFILEMETADATA</span>
-<a name="line-543"></a>
-<a name="line-544"></a> <span class="c1">//--------------Advanced Metadata Configuration --------------</span>
-<a name="line-545"></a>
-<a name="line-546"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">advTab</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AdvancedMetadataTab</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
-<a name="line-547"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span><span class="o">-&gt;</span><span class="n">insertTab</span><span class="p">(</span><span class="n">AdvancedConfig</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">advTab</span><span class="p">,</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@title:tab&quot;</span><span class="p">,</span> <span class="s">&quot;Advanced&quot;</span><span class="p">));</span>
-<a name="line-548"></a>
-<a name="line-549"></a> <span class="c1">//------------------------Sidecars-------------------------</span>
-<a name="line-550"></a>
-<a name="line-551"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">sidecarsPanel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span><span class="p">);</span>
-<a name="line-552"></a> <span class="n">QVBoxLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">sidecarsLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QVBoxLayout</span><span class="p">(</span><span class="n">sidecarsPanel</span><span class="p">);</span>
-<a name="line-553"></a>
-<a name="line-554"></a> <span class="c1">// --------------------------------------------------------</span>
-<a name="line-555"></a>
-<a name="line-556"></a> <span class="n">QGroupBox</span><span class="o">*</span> <span class="n">rwSidecarsGroup</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGroupBox</span><span class="p">;</span>
-<a name="line-557"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">rwSidecarsLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">;</span>
-<a name="line-558"></a>
-<a name="line-559"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">rwSidecarsLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@label&quot;</span><span class="p">,</span> <span class="s">&quot;Reading and Writing to Sidecars&quot;</span><span class="p">));</span>
-<a name="line-560"></a>
-<a name="line-561"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readXMPSidecarBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
-<a name="line-562"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readXMPSidecarBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Read from sidecar files&quot;</span><span class="p">));</span>
-<a name="line-563"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readXMPSidecarBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
-<a name="line-564"></a> <span class="s">&quot;Turn on this option to read metadata from XMP sidecar files when reading metadata.&quot;</span><span class="p">));</span>
-<a name="line-565"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readXMPSidecarBox</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">MetaEngine</span><span class="o">::</span><span class="n">supportXmp</span><span class="p">());</span>
-<a name="line-566"></a>
-<a name="line-567"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeXMPSidecarBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
-<a name="line-568"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeXMPSidecarBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Write to sidecar files&quot;</span><span class="p">));</span>
-<a name="line-569"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeXMPSidecarBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
-<a name="line-570"></a> <span class="s">&quot;Turn on this option to save, as specified, metadata to XMP sidecar files.&quot;</span><span class="p">));</span>
-<a name="line-571"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeXMPSidecarBox</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="n">MetaEngine</span><span class="o">::</span><span class="n">supportXmp</span><span class="p">());</span>
-<a name="line-572"></a>
-<a name="line-573"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QComboBox</span><span class="p">;</span>
-<a name="line-574"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Write to XMP sidecar for read-only item only&quot;</span><span class="p">),</span> <span class="n">MetaEngine</span><span class="o">::</span><span class="n">WRITE_TO_SIDECAR_ONLY_FOR_READ_ONLY_FILES</span><span class="p">);</span>
-<a name="line-575"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Write to XMP sidecar only&quot;</span><span class="p">),</span> <span class="n">MetaEngine</span><span class="o">::</span><span class="n">WRITE_TO_SIDECAR_ONLY</span><span class="p">);</span>
-<a name="line-576"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span><span class="o">-&gt;</span><span class="n">addItem</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Write to item and XMP Sidecar&quot;</span><span class="p">),</span> <span class="n">MetaEngine</span><span class="o">::</span><span class="n">WRITE_TO_SIDECAR_AND_FILE</span><span class="p">);</span>
-<a name="line-577"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span><span class="o">-&gt;</span><span class="n">setToolTip</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:tooltip&quot;</span><span class="p">,</span> <span class="s">&quot;Specify the exact mode of XMP sidecar writing&quot;</span><span class="p">));</span>
-<a name="line-578"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-579"></a>
-<a name="line-580"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sidecarFileNameBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QCheckBox</span><span class="p">;</span>
-<a name="line-581"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sidecarFileNameBox</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@option:check&quot;</span><span class="p">,</span> <span class="s">&quot;Sidecar file names are compatible with commercial programs&quot;</span><span class="p">));</span>
-<a name="line-582"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sidecarFileNameBox</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info:whatsthis&quot;</span><span class="p">,</span>
-<a name="line-583"></a> <span class="s">&quot;Turn on this option to create the XMP sidecar files with a compatible &quot;</span>
-<a name="line-584"></a> <span class="s">&quot;file name (BASENAME.xmp) used by many commercial programs. &quot;</span>
-<a name="line-585"></a> <span class="s">&quot;For Darktable do not enable this option.&quot;</span><span class="p">));</span>
-<a name="line-586"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sidecarFileNameBox</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-587"></a>
-<a name="line-588"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">writeXMPSidecarBox</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-589"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
-<a name="line-590"></a>
-<a name="line-591"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">writeXMPSidecarBox</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-592"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sidecarFileNameBox</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">setEnabled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
-<a name="line-593"></a>
-<a name="line-594"></a> <span class="n">rwSidecarsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">rwSidecarsLabel</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-595"></a> <span class="n">rwSidecarsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">readXMPSidecarBox</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-596"></a> <span class="n">rwSidecarsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">writeXMPSidecarBox</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-597"></a> <span class="n">rwSidecarsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span>
-<a name="line-598"></a> <span class="n">rwSidecarsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sidecarFileNameBox</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">);</span>
-<a name="line-599"></a> <span class="n">rwSidecarsLayout</span><span class="o">-&gt;</span><span class="n">setColumnStretch</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
-<a name="line-600"></a> <span class="n">rwSidecarsGroup</span><span class="o">-&gt;</span><span class="n">setLayout</span><span class="p">(</span><span class="n">rwSidecarsLayout</span><span class="p">);</span>
-<a name="line-601"></a>
-<a name="line-602"></a> <span class="c1">// --------------------------------------------------------</span>
-<a name="line-603"></a>
-<a name="line-604"></a> <span class="n">QGroupBox</span><span class="o">*</span> <span class="k">const</span> <span class="n">extensionsGroup</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGroupBox</span><span class="p">(</span><span class="n">sidecarsPanel</span><span class="p">);</span>
-<a name="line-605"></a> <span class="n">QGridLayout</span><span class="o">*</span> <span class="k">const</span> <span class="n">extensionsGrid</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QGridLayout</span><span class="p">(</span><span class="n">extensionsGroup</span><span class="p">);</span>
-<a name="line-606"></a>
-<a name="line-607"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="n">extensionsGroupLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span>
-<a name="line-608"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;p&gt;Add file types to be recognised as sidecars.&lt;/p&gt;&quot;</span>
-<a name="line-609"></a> <span class="s">&quot;&lt;p&gt;digiKam (optionally) writes metadata to *.xmp sidecar &quot;</span>
-<a name="line-610"></a> <span class="s">&quot;files. Other programs might use different types, which &quot;</span>
-<a name="line-611"></a> <span class="s">&quot;can be specified below. digiKam will neither display these &quot;</span>
-<a name="line-612"></a> <span class="s">&quot;nor read from or write to them. But whenever a matching album &quot;</span>
-<a name="line-613"></a> <span class="s">&quot;item (e.g. </span><span class="se">\&quot;</span><span class="s">image.dng</span><span class="se">\&quot;</span><span class="s"> for </span><span class="se">\&quot;</span><span class="s">image.dng.pp3</span><span class="se">\&quot;</span><span class="s">) is renamed, &quot;</span>
-<a name="line-614"></a> <span class="s">&quot;moved, copied or deleted, the same operation will be done &quot;</span>
-<a name="line-615"></a> <span class="s">&quot;on these sidecar files.&lt;/p&gt;&quot;</span>
-<a name="line-616"></a> <span class="s">&quot;&lt;p&gt;Multiple extensions must be separated by a semicolon &quot;</span>
-<a name="line-617"></a> <span class="s">&quot;or a space.&lt;/p&gt;&quot;</span><span class="p">));</span>
-<a name="line-618"></a> <span class="n">extensionsGroupLabel</span><span class="o">-&gt;</span><span class="n">setWordWrap</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-619"></a>
-<a name="line-620"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">extensionsLogo</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">extensionsGroup</span><span class="p">);</span>
-<a name="line-621"></a> <span class="n">extensionsLogo</span><span class="o">-&gt;</span><span class="n">setPixmap</span><span class="p">(</span><span class="n">QIcon</span><span class="o">::</span><span class="n">fromTheme</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;text-x-texinfo&quot;</span><span class="p">)).</span><span class="n">pixmap</span><span class="p">(</span><span class="mi">48</span><span class="p">));</span>
-<a name="line-622"></a>
-<a name="line-623"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">extensionsEdit</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLineEdit</span><span class="p">(</span><span class="n">extensionsGroup</span><span class="p">);</span>
-<a name="line-624"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">extensionsEdit</span><span class="o">-&gt;</span><span class="n">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;p&gt;Here you can add extra extensions &quot;</span>
-<a name="line-625"></a> <span class="s">&quot;of sidecars files to be processed alongside &quot;</span>
-<a name="line-626"></a> <span class="s">&quot;regular items. These files will not be visible, &quot;</span>
-<a name="line-627"></a> <span class="s">&quot;but regarded as an extension of the main file. &quot;</span>
-<a name="line-628"></a> <span class="s">&quot;Just write </span><span class="se">\&quot;</span><span class="s">xyz abc</span><span class="se">\&quot;</span><span class="s"> to support files with &quot;</span>
-<a name="line-629"></a> <span class="s">&quot;the *.xyz and *.abc extensions. The internally &quot;</span>
-<a name="line-630"></a> <span class="s">&quot;used sidecars type *.xmp is always included.&lt;/p&gt;&quot;</span><span class="p">));</span>
-<a name="line-631"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">extensionsEdit</span><span class="o">-&gt;</span><span class="n">setClearButtonEnabled</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-632"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">extensionsEdit</span><span class="o">-&gt;</span><span class="n">setPlaceholderText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Enter additional sidecars file extensions.&quot;</span><span class="p">));</span>
-<a name="line-633"></a>
-<a name="line-634"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="k">const</span> <span class="n">extensionsLabel</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QLabel</span><span class="p">(</span><span class="n">extensionsGroup</span><span class="p">);</span>
-<a name="line-635"></a> <span class="n">extensionsLabel</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Additional &amp;sidecar file extensions&quot;</span><span class="p">));</span>
-<a name="line-636"></a> <span class="n">extensionsLabel</span><span class="o">-&gt;</span><span class="n">setBuddy</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">extensionsEdit</span><span class="p">);</span>
-<a name="line-637"></a>
-<a name="line-638"></a> <span class="n">extensionsGrid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">extensionsGroupLabel</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span>
-<a name="line-639"></a> <span class="n">extensionsGrid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">extensionsLogo</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-640"></a> <span class="n">extensionsGrid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">extensionsLabel</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span>
-<a name="line-641"></a> <span class="n">extensionsGrid</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">extensionsEdit</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span>
-<a name="line-642"></a> <span class="n">extensionsGrid</span><span class="o">-&gt;</span><span class="n">setColumnStretch</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span>
-<a name="line-643"></a>
-<a name="line-644"></a> <span class="c1">// --------------------------------------------------------</span>
-<a name="line-645"></a>
-<a name="line-646"></a> <span class="n">sidecarsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">rwSidecarsGroup</span><span class="p">);</span>
-<a name="line-647"></a> <span class="n">sidecarsLayout</span><span class="o">-&gt;</span><span class="n">addWidget</span><span class="p">(</span><span class="n">extensionsGroup</span><span class="p">);</span>
-<a name="line-648"></a> <span class="n">sidecarsLayout</span><span class="o">-&gt;</span><span class="n">addStretch</span><span class="p">();</span>
-<a name="line-649"></a>
-<a name="line-650"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span><span class="o">-&gt;</span><span class="n">insertTab</span><span class="p">(</span><span class="n">Sidecars</span><span class="p">,</span> <span class="n">sidecarsPanel</span><span class="p">,</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@title:tab&quot;</span><span class="p">,</span> <span class="s">&quot;Sidecars&quot;</span><span class="p">));</span>
-<a name="line-651"></a>
-<a name="line-652"></a> <span class="c1">// --------------------------------------------------------</span>
-<a name="line-653"></a>
-<a name="line-654"></a> <span class="n">readSettings</span><span class="p">();</span>
-<a name="line-655"></a>
-<a name="line-656"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">exifRotateBox</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-657"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotExifAutoRotateToggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
-<a name="line-658"></a>
-<a name="line-659"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">clearMetadataIfRescanBox</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-660"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotClearMetadataToggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
-<a name="line-661"></a>
-<a name="line-662"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">writeRawFilesBox</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">toggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-663"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotWriteRawFilesToggled</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
-<a name="line-664"></a><span class="p">}</span>
-<a name="line-665"></a>
-<a name="line-666"></a><span class="n">SetupMetadata</span><span class="o">::~</span><span class="n">SetupMetadata</span><span class="p">()</span>
-<a name="line-667"></a><span class="p">{</span>
-<a name="line-668"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
-<a name="line-669"></a><span class="p">}</span>
-<a name="line-670"></a>
-<a name="line-671"></a><span class="kt">void</span> <span class="n">SetupMetadata</span><span class="o">::</span><span class="n">setActiveMainTab</span><span class="p">(</span><span class="n">MetadataTab</span> <span class="n">tab</span><span class="p">)</span>
-<a name="line-672"></a><span class="p">{</span>
-<a name="line-673"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tab</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">tab</span><span class="p">);</span>
-<a name="line-674"></a><span class="p">}</span>
-<a name="line-675"></a>
-<a name="line-676"></a><span class="kt">void</span> <span class="n">SetupMetadata</span><span class="o">::</span><span class="n">setActiveSubTab</span><span class="p">(</span><span class="kt">int</span> <span class="n">tab</span><span class="p">)</span>
-<a name="line-677"></a><span class="p">{</span>
-<a name="line-678"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">displaySubTab</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">tab</span><span class="p">);</span>
-<a name="line-679"></a><span class="p">}</span>
-<a name="line-680"></a>
-<a name="line-681"></a><span class="kt">void</span> <span class="n">SetupMetadata</span><span class="o">::</span><span class="n">applySettings</span><span class="p">()</span>
-<a name="line-682"></a><span class="p">{</span>
-<a name="line-683"></a> <span class="n">MetaEngineSettings</span><span class="o">*</span> <span class="k">const</span> <span class="n">mSettings</span> <span class="o">=</span> <span class="n">MetaEngineSettings</span><span class="o">::</span><span class="n">instance</span><span class="p">();</span>
-<a name="line-684"></a>
-<a name="line-685"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">mSettings</span><span class="p">)</span>
-<a name="line-686"></a> <span class="p">{</span>
-<a name="line-687"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-688"></a> <span class="p">}</span>
-<a name="line-689"></a>
-<a name="line-690"></a> <span class="n">MetaEngineSettingsContainer</span> <span class="n">set</span><span class="p">;</span>
-<a name="line-691"></a>
-<a name="line-692"></a> <span class="n">set</span><span class="p">.</span><span class="n">rotationBehavior</span> <span class="o">=</span> <span class="n">MetaEngineSettingsContainer</span><span class="o">::</span><span class="n">RotateByInternalFlag</span><span class="p">;</span>
-<a name="line-693"></a>
-<a name="line-694"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">allowRotateByMetadata</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
-<a name="line-695"></a> <span class="p">{</span>
-<a name="line-696"></a> <span class="n">set</span><span class="p">.</span><span class="n">rotationBehavior</span> <span class="o">|=</span> <span class="n">MetaEngineSettingsContainer</span><span class="o">::</span><span class="n">RotateByMetadataFlag</span><span class="p">;</span>
-<a name="line-697"></a> <span class="p">}</span>
-<a name="line-698"></a>
-<a name="line-699"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByContents</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
-<a name="line-700"></a> <span class="p">{</span>
-<a name="line-701"></a> <span class="n">set</span><span class="p">.</span><span class="n">rotationBehavior</span> <span class="o">|=</span> <span class="n">MetaEngineSettingsContainer</span><span class="o">::</span><span class="n">RotateByLosslessRotation</span><span class="p">;</span>
-<a name="line-702"></a>
-<a name="line-703"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">allowLossyRotate</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
-<a name="line-704"></a> <span class="p">{</span>
-<a name="line-705"></a> <span class="n">set</span><span class="p">.</span><span class="n">rotationBehavior</span> <span class="o">|=</span> <span class="n">MetaEngineSettingsContainer</span><span class="o">::</span><span class="n">RotateByLossyRotation</span><span class="p">;</span>
-<a name="line-706"></a> <span class="p">}</span>
-<a name="line-707"></a> <span class="p">}</span>
-<a name="line-708"></a>
-<a name="line-709"></a> <span class="n">set</span><span class="p">.</span><span class="n">exifRotate</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exifRotateBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
-<a name="line-710"></a> <span class="n">set</span><span class="p">.</span><span class="n">exifSetOrientation</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exifSetOrientationBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
-<a name="line-711"></a>
-<a name="line-712"></a> <span class="n">set</span><span class="p">.</span><span class="n">saveComments</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveCommentsBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
-<a name="line-713"></a> <span class="n">set</span><span class="p">.</span><span class="n">saveDateTime</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveDateTimeBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
-<a name="line-714"></a> <span class="n">set</span><span class="p">.</span><span class="n">savePickLabel</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">savePickLabelBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
-<a name="line-715"></a> <span class="n">set</span><span class="p">.</span><span class="n">saveColorLabel</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveColorLabelBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
-<a name="line-716"></a> <span class="n">set</span><span class="p">.</span><span class="n">saveRating</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveRatingBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
-<a name="line-717"></a> <span class="n">set</span><span class="p">.</span><span class="n">saveTags</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTagsBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
-<a name="line-718"></a> <span class="n">set</span><span class="p">.</span><span class="n">saveTemplate</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTemplateBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
-<a name="line-719"></a> <span class="n">set</span><span class="p">.</span><span class="n">saveFaceTags</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveFaceTags</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
-<a name="line-720"></a>
-<a name="line-721"></a> <span class="n">set</span><span class="p">.</span><span class="n">useLazySync</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">useLazySync</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
-<a name="line-722"></a> <span class="n">set</span><span class="p">.</span><span class="n">writeRawFiles</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeRawFilesBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
-<a name="line-723"></a> <span class="n">set</span><span class="p">.</span><span class="n">useXMPSidecar4Reading</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readXMPSidecarBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
-<a name="line-724"></a> <span class="n">set</span><span class="p">.</span><span class="n">useCompatibleFileName</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sidecarFileNameBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
-<a name="line-725"></a>
-<a name="line-726"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">writeXMPSidecarBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
-<a name="line-727"></a> <span class="p">{</span>
-<a name="line-728"></a> <span class="n">set</span><span class="p">.</span><span class="n">metadataWritingMode</span> <span class="o">=</span> <span class="p">(</span><span class="n">MetaEngine</span><span class="o">::</span><span class="n">MetadataWritingMode</span><span class="p">)</span>
-<a name="line-729"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span><span class="o">-&gt;</span><span class="n">itemData</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">()).</span><span class="n">toInt</span><span class="p">();</span>
-<a name="line-730"></a> <span class="p">}</span>
-<a name="line-731"></a> <span class="k">else</span>
-<a name="line-732"></a> <span class="p">{</span>
-<a name="line-733"></a> <span class="n">set</span><span class="p">.</span><span class="n">metadataWritingMode</span> <span class="o">=</span> <span class="n">MetaEngine</span><span class="o">::</span><span class="n">WRITE_TO_FILE_ONLY</span><span class="p">;</span>
-<a name="line-734"></a> <span class="p">}</span>
-<a name="line-735"></a>
-<a name="line-736"></a> <span class="n">set</span><span class="p">.</span><span class="n">updateFileTimeStamp</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">updateFileTimeStampBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
-<a name="line-737"></a> <span class="n">set</span><span class="p">.</span><span class="n">rescanImageIfModified</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rescanImageIfModifiedBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
-<a name="line-738"></a> <span class="n">set</span><span class="p">.</span><span class="n">clearMetadataIfRescan</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">clearMetadataIfRescanBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
-<a name="line-739"></a>
-<a name="line-740"></a> <span class="n">set</span><span class="p">.</span><span class="n">sidecarExtensions</span> <span class="o">=</span> <span class="n">cleanUserFilterString</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">extensionsEdit</span><span class="o">-&gt;</span><span class="n">text</span><span class="p">());</span>
-<a name="line-741"></a> <span class="n">set</span><span class="p">.</span><span class="n">sidecarExtensions</span><span class="p">.</span><span class="n">removeAll</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;xmp&quot;</span><span class="p">));</span>
-<a name="line-742"></a> <span class="n">set</span><span class="p">.</span><span class="n">sidecarExtensions</span><span class="p">.</span><span class="n">removeDuplicates</span><span class="p">();</span>
-<a name="line-743"></a>
-<a name="line-744"></a> <span class="n">mSettings</span><span class="o">-&gt;</span><span class="n">setSettings</span><span class="p">(</span><span class="n">set</span><span class="p">);</span>
-<a name="line-745"></a>
-<a name="line-746"></a>
-<a name="line-747"></a><span class="cp">#ifdef HAVE_KFILEMETADATA</span>
-<a name="line-748"></a>
-<a name="line-749"></a> <span class="n">ApplicationSettings</span><span class="o">*</span> <span class="k">const</span> <span class="n">aSettings</span> <span class="o">=</span> <span class="n">ApplicationSettings</span><span class="o">::</span><span class="n">instance</span><span class="p">();</span>
-<a name="line-750"></a>
-<a name="line-751"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">aSettings</span><span class="p">)</span>
-<a name="line-752"></a> <span class="p">{</span>
-<a name="line-753"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-754"></a> <span class="p">}</span>
-<a name="line-755"></a>
-<a name="line-756"></a> <span class="n">aSettings</span><span class="o">-&gt;</span><span class="n">setSyncDigikamToBaloo</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">saveToBalooBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
-<a name="line-757"></a> <span class="n">aSettings</span><span class="o">-&gt;</span><span class="n">setSyncBalooToDigikam</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">readFromBalooBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
-<a name="line-758"></a>
-<a name="line-759"></a> <span class="n">aSettings</span><span class="o">-&gt;</span><span class="n">saveSettings</span><span class="p">();</span>
-<a name="line-760"></a>
-<a name="line-761"></a><span class="cp">#endif </span><span class="c1">// HAVE_KFILEMETADATA</span>
-<a name="line-762"></a>
-<a name="line-763"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagsCfgPanel</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
-<a name="line-764"></a>
-<a name="line-765"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">advTab</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
-<a name="line-766"></a><span class="p">}</span>
-<a name="line-767"></a>
-<a name="line-768"></a><span class="kt">void</span> <span class="n">SetupMetadata</span><span class="o">::</span><span class="n">readSettings</span><span class="p">()</span>
-<a name="line-769"></a><span class="p">{</span>
-<a name="line-770"></a> <span class="n">MetaEngineSettings</span><span class="o">*</span> <span class="k">const</span> <span class="n">mSettings</span> <span class="o">=</span> <span class="n">MetaEngineSettings</span><span class="o">::</span><span class="n">instance</span><span class="p">();</span>
-<a name="line-771"></a>
-<a name="line-772"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">mSettings</span><span class="p">)</span>
-<a name="line-773"></a> <span class="p">{</span>
-<a name="line-774"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-775"></a> <span class="p">}</span>
-<a name="line-776"></a>
-<a name="line-777"></a> <span class="n">MetaEngineSettingsContainer</span> <span class="n">set</span> <span class="o">=</span> <span class="n">mSettings</span><span class="o">-&gt;</span><span class="n">settings</span><span class="p">();</span>
-<a name="line-778"></a>
-<a name="line-779"></a> <span class="k">if</span> <span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">rotationBehavior</span> <span class="o">&amp;</span> <span class="n">MetaEngineSettingsContainer</span><span class="o">::</span><span class="n">RotatingPixels</span><span class="p">)</span>
-<a name="line-780"></a> <span class="p">{</span>
-<a name="line-781"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByContents</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-782"></a> <span class="p">}</span>
-<a name="line-783"></a> <span class="k">else</span>
-<a name="line-784"></a> <span class="p">{</span>
-<a name="line-785"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rotateByFlag</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-786"></a> <span class="p">}</span>
-<a name="line-787"></a>
-<a name="line-788"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowRotateByMetadata</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">rotationBehavior</span> <span class="o">&amp;</span> <span class="n">MetaEngineSettingsContainer</span><span class="o">::</span><span class="n">RotateByMetadataFlag</span><span class="p">);</span>
-<a name="line-789"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">allowLossyRotate</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">rotationBehavior</span> <span class="o">&amp;</span> <span class="n">MetaEngineSettingsContainer</span><span class="o">::</span><span class="n">RotateByLossyRotation</span><span class="p">);</span>
-<a name="line-790"></a>
-<a name="line-791"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exifAutoRotateOriginal</span> <span class="o">=</span> <span class="n">set</span><span class="p">.</span><span class="n">exifRotate</span><span class="p">;</span>
-<a name="line-792"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exifRotateBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">exifAutoRotateOriginal</span><span class="p">);</span>
-<a name="line-793"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exifSetOrientationBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">exifSetOrientation</span><span class="p">);</span>
-<a name="line-794"></a>
-<a name="line-795"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTagsBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">saveTags</span><span class="p">);</span>
-<a name="line-796"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveCommentsBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">saveComments</span><span class="p">);</span>
-<a name="line-797"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveRatingBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">saveRating</span><span class="p">);</span>
-<a name="line-798"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">savePickLabelBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">savePickLabel</span><span class="p">);</span>
-<a name="line-799"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveColorLabelBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">saveColorLabel</span><span class="p">);</span>
-<a name="line-800"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveDateTimeBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">saveDateTime</span><span class="p">);</span>
-<a name="line-801"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveTemplateBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">saveTemplate</span><span class="p">);</span>
-<a name="line-802"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveFaceTags</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">saveFaceTags</span><span class="p">);</span>
-<a name="line-803"></a>
-<a name="line-804"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">useLazySync</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">useLazySync</span><span class="p">);</span>
-<a name="line-805"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeRawFilesBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">writeRawFiles</span><span class="p">);</span>
-<a name="line-806"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readXMPSidecarBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">useXMPSidecar4Reading</span><span class="p">);</span>
-<a name="line-807"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sidecarFileNameBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">useCompatibleFileName</span><span class="p">);</span>
-<a name="line-808"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">updateFileTimeStampBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">updateFileTimeStamp</span><span class="p">);</span>
-<a name="line-809"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rescanImageIfModifiedBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">rescanImageIfModified</span><span class="p">);</span>
-<a name="line-810"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">clearMetadataIfRescanBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">clearMetadataIfRescan</span><span class="p">);</span>
-<a name="line-811"></a>
-<a name="line-812"></a> <span class="k">if</span> <span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">metadataWritingMode</span> <span class="o">==</span> <span class="n">MetaEngine</span><span class="o">::</span><span class="n">WRITE_TO_FILE_ONLY</span><span class="p">)</span>
-<a name="line-813"></a> <span class="p">{</span>
-<a name="line-814"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeXMPSidecarBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-815"></a> <span class="p">}</span>
-<a name="line-816"></a> <span class="k">else</span>
-<a name="line-817"></a> <span class="p">{</span>
-<a name="line-818"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeXMPSidecarBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-819"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">writingModeCombo</span><span class="o">-&gt;</span><span class="n">findData</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">metadataWritingMode</span><span class="p">));</span>
-<a name="line-820"></a> <span class="p">}</span>
-<a name="line-821"></a>
-<a name="line-822"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">extensionsEdit</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">set</span><span class="p">.</span><span class="n">sidecarExtensions</span><span class="p">.</span><span class="n">join</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39; &#39;</span><span class="p">)));</span>
-<a name="line-823"></a>
-<a name="line-824"></a><span class="cp">#ifdef HAVE_KFILEMETADATA</span>
-<a name="line-825"></a>
-<a name="line-826"></a> <span class="n">ApplicationSettings</span><span class="o">*</span> <span class="k">const</span> <span class="n">aSettings</span> <span class="o">=</span> <span class="n">ApplicationSettings</span><span class="o">::</span><span class="n">instance</span><span class="p">();</span>
-<a name="line-827"></a>
-<a name="line-828"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">aSettings</span><span class="p">)</span>
-<a name="line-829"></a> <span class="p">{</span>
-<a name="line-830"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-831"></a> <span class="p">}</span>
-<a name="line-832"></a>
-<a name="line-833"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">saveToBalooBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">aSettings</span><span class="o">-&gt;</span><span class="n">getSyncDigikamToBaloo</span><span class="p">());</span>
-<a name="line-834"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">readFromBalooBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">aSettings</span><span class="o">-&gt;</span><span class="n">getSyncBalooToDigikam</span><span class="p">());</span>
-<a name="line-835"></a>
-<a name="line-836"></a><span class="cp">#endif </span><span class="c1">// HAVE_KFILEMETADATA</span>
-<a name="line-837"></a>
-<a name="line-838"></a><span class="p">}</span>
-<a name="line-839"></a>
-<a name="line-840"></a><span class="kt">bool</span> <span class="n">SetupMetadata</span><span class="o">::</span><span class="n">exifAutoRotateHasChanged</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-841"></a><span class="p">{</span>
-<a name="line-842"></a> <span class="k">return</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">exifAutoRotateOriginal</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exifRotateBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
-<a name="line-843"></a><span class="p">}</span>
-<a name="line-844"></a>
-<a name="line-845"></a><span class="kt">void</span> <span class="n">SetupMetadata</span><span class="o">::</span><span class="n">slotExifAutoRotateToggled</span><span class="p">(</span><span class="kt">bool</span> <span class="n">b</span><span class="p">)</span>
-<a name="line-846"></a><span class="p">{</span>
-<a name="line-847"></a> <span class="c1">// Show info if rotation was switched off, and only once.</span>
-<a name="line-848"></a>
-<a name="line-849"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">b</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">exifAutoRotateShowedInfo</span> <span class="o">&amp;&amp;</span> <span class="n">exifAutoRotateHasChanged</span><span class="p">())</span>
-<a name="line-850"></a> <span class="p">{</span>
-<a name="line-851"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exifAutoRotateShowedInfo</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-852"></a> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">information</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">applicationName</span><span class="p">(),</span>
-<a name="line-853"></a> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info&quot;</span><span class="p">,</span>
-<a name="line-854"></a> <span class="s">&quot;Switching off exif auto rotation will most probably show &quot;</span>
-<a name="line-855"></a> <span class="s">&quot;your images in a wrong orientation, so only change this &quot;</span>
-<a name="line-856"></a> <span class="s">&quot;option if you explicitly require this.&quot;</span><span class="p">));</span>
-<a name="line-857"></a> <span class="p">}</span>
-<a name="line-858"></a><span class="p">}</span>
-<a name="line-859"></a>
-<a name="line-860"></a><span class="kt">void</span> <span class="n">SetupMetadata</span><span class="o">::</span><span class="n">slotClearMetadataToggled</span><span class="p">(</span><span class="kt">bool</span> <span class="n">b</span><span class="p">)</span>
-<a name="line-861"></a><span class="p">{</span>
-<a name="line-862"></a> <span class="c1">// Show info if delete metadata from the database was switched on, and only once.</span>
-<a name="line-863"></a>
-<a name="line-864"></a> <span class="k">if</span> <span class="p">(</span><span class="n">b</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">clearMetadataShowedInfo</span><span class="p">)</span>
-<a name="line-865"></a> <span class="p">{</span>
-<a name="line-866"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">clearMetadataShowedInfo</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-867"></a> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">information</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">applicationName</span><span class="p">(),</span>
-<a name="line-868"></a> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info&quot;</span><span class="p">,</span>
-<a name="line-869"></a> <span class="s">&quot;Switching on this option and your metadata has been written to the &quot;</span>
-<a name="line-870"></a> <span class="s">&quot;database only and not to the file or sidecar, you will be able to &quot;</span>
-<a name="line-871"></a> <span class="s">&quot;lose inserted metadata such as tags, keywords, or geographic &quot;</span>
-<a name="line-872"></a> <span class="s">&quot;coordinates.&quot;</span><span class="p">));</span>
-<a name="line-873"></a> <span class="p">}</span>
-<a name="line-874"></a><span class="p">}</span>
-<a name="line-875"></a>
-<a name="line-876"></a><span class="kt">void</span> <span class="n">SetupMetadata</span><span class="o">::</span><span class="n">slotWriteRawFilesToggled</span><span class="p">(</span><span class="kt">bool</span> <span class="n">b</span><span class="p">)</span>
-<a name="line-877"></a><span class="p">{</span>
-<a name="line-878"></a> <span class="c1">// Show info if write metadata to raw files was switched on</span>
-<a name="line-879"></a>
-<a name="line-880"></a> <span class="k">if</span> <span class="p">(</span><span class="n">b</span><span class="p">)</span>
-<a name="line-881"></a> <span class="p">{</span>
-<a name="line-882"></a> <span class="n">QApplication</span><span class="o">::</span><span class="n">beep</span><span class="p">();</span>
-<a name="line-883"></a>
-<a name="line-884"></a><span class="hll"> <span class="n">QPointer</span><span class="o">&lt;</span><span class="n">QMessageBox</span><span class="o">&gt;</span> <span class="n">msgBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QMessageBox</span><span class="p">(</span><span class="n">QMessageBox</span><span class="o">::</span><span class="n">Warning</span><span class="p">,</span><span class='error2'>&lt;--- Shadowed declaration</span>
-</span><a name="line-885"></a> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">applicationName</span><span class="p">(),</span>
-<a name="line-886"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;p&gt;&lt;b&gt;Do you really want to enable metadata writing to RAW files?&lt;/b&gt;&lt;/p&gt;&quot;</span>
-<a name="line-887"></a> <span class="s">&quot;&lt;p&gt;DigiKam delegates this task to the Exiv2 library. With different RAW &quot;</span>
-<a name="line-888"></a> <span class="s">&quot;formats, problems are known which can lead to the destruction of RAW &quot;</span>
-<a name="line-889"></a> <span class="s">&quot;files. If you decide to do so, make a backup of your RAW files.&lt;/p&gt;&quot;</span>
-<a name="line-890"></a> <span class="s">&quot;&lt;p&gt;&lt;b&gt;We strongly recommend not to enable this option.&lt;/b&gt;&lt;/p&gt;&quot;</span><span class="p">),</span>
-<a name="line-891"></a> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">Yes</span> <span class="o">|</span> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">No</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-892"></a>
-<a name="line-893"></a> <span class="n">msgBox</span><span class="o">-&gt;</span><span class="n">button</span><span class="p">(</span><span class="n">QMessageBox</span><span class="o">::</span><span class="n">Yes</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Yes I understand&quot;</span><span class="p">));</span>
-<a name="line-894"></a> <span class="n">msgBox</span><span class="o">-&gt;</span><span class="n">setDefaultButton</span><span class="p">(</span><span class="n">QMessageBox</span><span class="o">::</span><span class="n">No</span><span class="p">);</span>
-<a name="line-895"></a>
-<a name="line-896"></a><span class="hll"> <span class="kt">int</span> <span class="n">result</span> <span class="o">=</span> <span class="n">msgBox</span><span class="o">-&gt;</span><span class="n">exec</span><span class="p">();</span><span class='error2'>&lt;--- Shadowed declaration</span>
-</span><a name="line-897"></a> <span class="k">delete</span> <span class="n">msgBox</span><span class="p">;</span>
-<a name="line-898"></a>
-<a name="line-899"></a> <span class="k">if</span> <span class="p">(</span><span class="n">result</span> <span class="o">==</span> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">Yes</span><span class="p">)</span>
-<a name="line-900"></a> <span class="p">{</span>
-<a name="line-901"></a><span class="hll"> <span class="n">QPointer</span><span class="o">&lt;</span><span class="n">QMessageBox</span><span class="o">&gt;</span> <span class="n">msgBox</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QMessageBox</span><span class="p">(</span><span class="n">QMessageBox</span><span class="o">::</span><span class="n">Warning</span><span class="p">,</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-902"></a> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">applicationName</span><span class="p">(),</span>
-<a name="line-903"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;You would rather disable writing metadata to RAW files?&quot;</span><span class="p">),</span>
-<a name="line-904"></a> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">Yes</span> <span class="o">|</span> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">No</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
-<a name="line-905"></a>
-<a name="line-906"></a><span class="hll"> <span class="kt">int</span> <span class="n">result</span> <span class="o">=</span> <span class="n">msgBox</span><span class="o">-&gt;</span><span class="n">exec</span><span class="p">();</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-907"></a> <span class="k">delete</span> <span class="n">msgBox</span><span class="p">;</span>
-<a name="line-908"></a>
-<a name="line-909"></a> <span class="k">if</span> <span class="p">(</span><span class="n">result</span> <span class="o">==</span> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">No</span><span class="p">)</span>
-<a name="line-910"></a> <span class="p">{</span>
-<a name="line-911"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-912"></a> <span class="p">}</span>
-<a name="line-913"></a> <span class="p">}</span>
-<a name="line-914"></a>
-<a name="line-915"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">writeRawFilesBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-916"></a> <span class="p">}</span>
-<a name="line-917"></a><span class="p">}</span>
-<a name="line-918"></a>
-<a name="line-919"></a><span class="p">}</span> <span class="c1">// namespace Digikam</span>
-</pre></div>
-</td></tr></table>
- </div>
- <div id="footer">
- <p>
- Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
- </br>
- Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
- IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
- <p>
- </div>
- </body>
-</html>
diff --git a/static/reports/cppcheck/master/3.html b/static/reports/cppcheck/master/3.html
index 6eed57fa1..e1539fcee 100644
--- a/static/reports/cppcheck/master/3.html
+++ b/static/reports/cppcheck/master/3.html
@@ -1,1611 +1,1611 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/dplugins/generic/tools/printcreator/manager/advprinttask.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/dplugins/generic/tools/printcreator/manager/advprinttask.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> advprinttask.cpp</p>
<a href='3.html#line-377'> shadowVar 377</a><a href='3.html#line-378'> shadowVar 378</a><a href='3.html#line-420'> shadowVar 420</a><a href='3.html#line-421'> shadowVar 421</a>
</div>
<div id="content">
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
<a name="line-6"></a><span class="cm"> * Date : 2007-11-07</span>
<a name="line-7"></a><span class="cm"> * Description : a tool to print images</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2017-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&gt;</span>
<a name="line-10"></a><span class="cm"> *</span>
<a name="line-11"></a><span class="cm"> * This program is free software; you can redistribute it</span>
<a name="line-12"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
<a name="line-13"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
<a name="line-14"></a><span class="cm"> * either version 2, or (at your option)</span>
<a name="line-15"></a><span class="cm"> * any later version.</span>
<a name="line-16"></a><span class="cm"> *</span>
<a name="line-17"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
<a name="line-18"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="line-19"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
<a name="line-20"></a><span class="cm"> * GNU General Public License for more details.</span>
<a name="line-21"></a><span class="cm"> *</span>
<a name="line-22"></a><span class="cm"> * ============================================================ */</span>
<a name="line-23"></a>
<a name="line-24"></a><span class="cp">#include</span> <span class="cpf">&quot;advprinttask.h&quot;</span><span class="cp"></span>
<a name="line-25"></a>
<a name="line-26"></a><span class="c1">// C++ includes</span>
<a name="line-27"></a>
<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;cmath&gt;</span><span class="cp"></span>
<a name="line-29"></a>
<a name="line-30"></a><span class="c1">// Qt includes</span>
<a name="line-31"></a>
<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QImage&gt;</span><span class="cp"></span>
<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QSize&gt;</span><span class="cp"></span>
<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QPainter&gt;</span><span class="cp"></span>
<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QFileInfo&gt;</span><span class="cp"></span>
<a name="line-36"></a>
<a name="line-37"></a><span class="c1">// KDE includes</span>
<a name="line-38"></a>
<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
<a name="line-40"></a>
<a name="line-41"></a><span class="c1">// Local includes</span>
<a name="line-42"></a>
<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&quot;advprintwizard.h&quot;</span><span class="cp"></span>
<a name="line-44"></a><span class="cp">#include</span> <span class="cpf">&quot;advprintphoto.h&quot;</span><span class="cp"></span>
<a name="line-45"></a><span class="cp">#include</span> <span class="cpf">&quot;advprintcaptionpage.h&quot;</span><span class="cp"></span>
<a name="line-46"></a><span class="cp">#include</span> <span class="cpf">&quot;dmetadata.h&quot;</span><span class="cp"></span>
<a name="line-47"></a><span class="cp">#include</span> <span class="cpf">&quot;dfileoperations.h&quot;</span><span class="cp"></span>
<a name="line-48"></a><span class="cp">#include</span> <span class="cpf">&quot;dimg.h&quot;</span><span class="cp"></span>
<a name="line-49"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
<a name="line-50"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_config.h&quot;</span><span class="cp"></span>
<a name="line-51"></a>
<a name="line-52"></a><span class="k">namespace</span> <span class="n">DigikamGenericPrintCreatorPlugin</span>
<a name="line-53"></a><span class="p">{</span>
<a name="line-54"></a>
<a name="line-55"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">AdvPrintTask</span><span class="o">::</span><span class="n">Private</span>
<a name="line-56"></a><span class="p">{</span>
<a name="line-57"></a><span class="k">public</span><span class="o">:</span>
<a name="line-58"></a>
<a name="line-59"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
<a name="line-60"></a> <span class="o">:</span> <span class="n">settings</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-61"></a> <span class="n">mode</span><span class="p">(</span><span class="n">AdvPrintTask</span><span class="o">::</span><span class="n">PRINT</span><span class="p">),</span>
<a name="line-62"></a> <span class="n">sizeIndex</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<a name="line-63"></a> <span class="p">{</span>
<a name="line-64"></a> <span class="p">}</span>
<a name="line-65"></a>
<a name="line-66"></a><span class="k">public</span><span class="o">:</span>
<a name="line-67"></a>
<a name="line-68"></a> <span class="n">AdvPrintSettings</span><span class="o">*</span> <span class="n">settings</span><span class="p">;</span>
<a name="line-69"></a>
<a name="line-70"></a> <span class="n">PrintMode</span> <span class="n">mode</span><span class="p">;</span>
<a name="line-71"></a> <span class="n">QSize</span> <span class="n">size</span><span class="p">;</span>
<a name="line-72"></a>
<a name="line-73"></a> <span class="kt">int</span> <span class="n">sizeIndex</span><span class="p">;</span>
<a name="line-74"></a><span class="p">};</span>
<a name="line-75"></a>
<a name="line-76"></a><span class="c1">// -------------------------------------------------------</span>
<a name="line-77"></a>
<a name="line-78"></a><span class="n">AdvPrintTask</span><span class="o">::</span><span class="n">AdvPrintTask</span><span class="p">(</span><span class="n">AdvPrintSettings</span><span class="o">*</span> <span class="k">const</span> <span class="n">settings</span><span class="p">,</span>
<a name="line-79"></a> <span class="n">PrintMode</span> <span class="n">mode</span><span class="p">,</span>
<a name="line-80"></a> <span class="k">const</span> <span class="n">QSize</span><span class="o">&amp;</span> <span class="n">size</span><span class="p">,</span>
<a name="line-81"></a> <span class="kt">int</span> <span class="n">sizeIndex</span><span class="p">)</span>
<a name="line-82"></a> <span class="o">:</span> <span class="n">ActionJob</span><span class="p">(),</span>
<a name="line-83"></a> <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">Private</span><span class="p">)</span>
<a name="line-84"></a><span class="p">{</span>
<a name="line-85"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span> <span class="o">=</span> <span class="n">settings</span><span class="p">;</span>
<a name="line-86"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mode</span> <span class="o">=</span> <span class="n">mode</span><span class="p">;</span>
<a name="line-87"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">size</span> <span class="o">=</span> <span class="n">size</span><span class="p">;</span>
<a name="line-88"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sizeIndex</span> <span class="o">=</span> <span class="n">sizeIndex</span><span class="p">;</span>
<a name="line-89"></a><span class="p">}</span>
<a name="line-90"></a>
<a name="line-91"></a><span class="n">AdvPrintTask</span><span class="o">::~</span><span class="n">AdvPrintTask</span><span class="p">()</span>
<a name="line-92"></a><span class="p">{</span>
<a name="line-93"></a> <span class="n">cancel</span><span class="p">();</span>
<a name="line-94"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
<a name="line-95"></a><span class="p">}</span>
<a name="line-96"></a>
<a name="line-97"></a><span class="kt">void</span> <span class="n">AdvPrintTask</span><span class="o">::</span><span class="n">run</span><span class="p">()</span>
<a name="line-98"></a><span class="p">{</span>
<a name="line-99"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mode</span><span class="p">)</span>
<a name="line-100"></a> <span class="p">{</span>
<a name="line-101"></a> <span class="k">case</span> <span class="nl">PREPAREPRINT</span><span class="p">:</span>
<a name="line-102"></a>
<a name="line-103"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_DPLUGIN_GENERIC_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start prepare to print&quot;</span><span class="p">;</span>
<a name="line-104"></a> <span class="n">preparePrint</span><span class="p">();</span>
<a name="line-105"></a> <span class="n">emit</span> <span class="nf">signalDone</span><span class="p">(</span><span class="o">!</span><span class="n">m_cancel</span><span class="p">);</span>
<a name="line-106"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_DPLUGIN_GENERIC_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Prepare to print is done&quot;</span><span class="p">;</span>
<a name="line-107"></a>
<a name="line-108"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-109"></a>
<a name="line-110"></a> <span class="k">case</span> <span class="nl">PRINT</span><span class="p">:</span>
<a name="line-111"></a>
<a name="line-112"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_DPLUGIN_GENERIC_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start to print&quot;</span><span class="p">;</span>
<a name="line-113"></a>
<a name="line-114"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">printerName</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">outputName</span><span class="p">(</span><span class="n">AdvPrintSettings</span><span class="o">::</span><span class="n">FILES</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
<a name="line-115"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">printerName</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">outputName</span><span class="p">(</span><span class="n">AdvPrintSettings</span><span class="o">::</span><span class="n">GIMP</span><span class="p">))</span>
<a name="line-116"></a> <span class="p">{</span>
<a name="line-117"></a> <span class="n">printPhotos</span><span class="p">();</span>
<a name="line-118"></a> <span class="n">emit</span> <span class="nf">signalDone</span><span class="p">(</span><span class="o">!</span><span class="n">m_cancel</span><span class="p">);</span>
<a name="line-119"></a> <span class="p">}</span>
<a name="line-120"></a> <span class="k">else</span>
<a name="line-121"></a> <span class="p">{</span>
<a name="line-122"></a> <span class="n">QStringList</span> <span class="n">files</span> <span class="o">=</span> <span class="n">printPhotosToFile</span><span class="p">();</span>
<a name="line-123"></a>
<a name="line-124"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">printerName</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">outputName</span><span class="p">(</span><span class="n">AdvPrintSettings</span><span class="o">::</span><span class="n">GIMP</span><span class="p">))</span>
<a name="line-125"></a> <span class="p">{</span>
<a name="line-126"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">gimpFiles</span> <span class="o">&lt;&lt;</span> <span class="n">files</span><span class="p">;</span>
<a name="line-127"></a> <span class="p">}</span>
<a name="line-128"></a>
<a name="line-129"></a> <span class="n">emit</span> <span class="n">signalDone</span><span class="p">(</span><span class="o">!</span><span class="n">m_cancel</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">files</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">());</span>
<a name="line-130"></a> <span class="p">}</span>
<a name="line-131"></a>
<a name="line-132"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_DPLUGIN_GENERIC_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Print is done&quot;</span><span class="p">;</span>
<a name="line-133"></a>
<a name="line-134"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-135"></a>
<a name="line-136"></a> <span class="k">default</span><span class="o">:</span> <span class="c1">// PREVIEW</span>
<a name="line-137"></a>
<a name="line-138"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_DPLUGIN_GENERIC_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Start to compute preview&quot;</span><span class="p">;</span>
<a name="line-139"></a>
<a name="line-140"></a> <span class="n">QImage</span> <span class="nf">img</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">size</span><span class="p">,</span> <span class="n">QImage</span><span class="o">::</span><span class="n">Format_ARGB32_Premultiplied</span><span class="p">);</span>
<a name="line-141"></a> <span class="n">QPainter</span> <span class="nf">p</span><span class="p">(</span><span class="o">&amp;</span><span class="n">img</span><span class="p">);</span>
<a name="line-142"></a> <span class="n">p</span><span class="p">.</span><span class="n">setCompositionMode</span><span class="p">(</span><span class="n">QPainter</span><span class="o">::</span><span class="n">CompositionMode_Clear</span><span class="p">);</span>
<a name="line-143"></a> <span class="n">p</span><span class="p">.</span><span class="n">fillRect</span><span class="p">(</span><span class="n">img</span><span class="p">.</span><span class="n">rect</span><span class="p">(),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">color0</span><span class="p">);</span>
<a name="line-144"></a> <span class="n">p</span><span class="p">.</span><span class="n">setCompositionMode</span><span class="p">(</span><span class="n">QPainter</span><span class="o">::</span><span class="n">CompositionMode_SourceOver</span><span class="p">);</span>
<a name="line-145"></a> <span class="n">paintOnePage</span><span class="p">(</span><span class="n">p</span><span class="p">,</span>
<a name="line-146"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">,</span>
<a name="line-147"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">outputLayouts</span><span class="o">-&gt;</span><span class="n">m_layouts</span><span class="p">,</span>
<a name="line-148"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">currentPreviewPage</span><span class="p">,</span>
<a name="line-149"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">disableCrop</span><span class="p">,</span>
<a name="line-150"></a> <span class="nb">true</span><span class="p">);</span>
<a name="line-151"></a> <span class="n">p</span><span class="p">.</span><span class="n">end</span><span class="p">();</span>
<a name="line-152"></a>
<a name="line-153"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_cancel</span><span class="p">)</span>
<a name="line-154"></a> <span class="n">emit</span> <span class="n">signalPreview</span><span class="p">(</span><span class="n">img</span><span class="p">);</span>
<a name="line-155"></a>
<a name="line-156"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_DPLUGIN_GENERIC_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Preview computation is done&quot;</span><span class="p">;</span>
<a name="line-157"></a>
<a name="line-158"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-159"></a> <span class="p">}</span>
<a name="line-160"></a><span class="p">}</span>
<a name="line-161"></a>
<a name="line-162"></a><span class="kt">void</span> <span class="n">AdvPrintTask</span><span class="o">::</span><span class="n">preparePrint</span><span class="p">()</span>
<a name="line-163"></a><span class="p">{</span>
<a name="line-164"></a> <span class="kt">int</span> <span class="n">photoIndex</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-165"></a>
<a name="line-166"></a> <span class="k">for</span> <span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">AdvPrintPhoto</span><span class="o">*&gt;::</span><span class="n">iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">begin</span><span class="p">()</span> <span class="p">;</span>
<a name="line-167"></a> <span class="n">it</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">end</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">it</span><span class="p">)</span>
<a name="line-168"></a> <span class="p">{</span>
<a name="line-169"></a> <span class="n">AdvPrintPhoto</span><span class="o">*</span> <span class="k">const</span> <span class="n">photo</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">AdvPrintPhoto</span><span class="o">*&gt;</span><span class="p">(</span><span class="o">*</span><span class="n">it</span><span class="p">);</span>
<a name="line-170"></a>
<a name="line-171"></a> <span class="k">if</span> <span class="p">(</span><span class="n">photo</span> <span class="o">&amp;&amp;</span> <span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_cropRegion</span> <span class="o">==</span> <span class="n">QRect</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">))</span>
<a name="line-172"></a> <span class="p">{</span>
<a name="line-173"></a> <span class="n">QRect</span><span class="o">*</span> <span class="k">const</span> <span class="n">curr</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">getLayout</span><span class="p">(</span><span class="n">photoIndex</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sizeIndex</span><span class="p">);</span>
<a name="line-174"></a>
<a name="line-175"></a> <span class="n">photo</span><span class="o">-&gt;</span><span class="n">updateCropRegion</span><span class="p">(</span><span class="n">curr</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">(),</span>
<a name="line-176"></a> <span class="n">curr</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">(),</span>
<a name="line-177"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">outputLayouts</span><span class="o">-&gt;</span><span class="n">m_autoRotate</span><span class="p">);</span>
<a name="line-178"></a> <span class="p">}</span>
<a name="line-179"></a>
<a name="line-180"></a> <span class="n">photoIndex</span><span class="o">++</span><span class="p">;</span>
<a name="line-181"></a> <span class="n">emit</span> <span class="nf">signalProgress</span><span class="p">(</span><span class="n">photoIndex</span><span class="p">);</span>
<a name="line-182"></a>
<a name="line-183"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_cancel</span><span class="p">)</span>
<a name="line-184"></a> <span class="p">{</span>
<a name="line-185"></a> <span class="n">signalMessage</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Printing canceled&quot;</span><span class="p">),</span> <span class="nb">true</span><span class="p">);</span>
<a name="line-186"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-187"></a> <span class="p">}</span>
<a name="line-188"></a> <span class="p">}</span>
<a name="line-189"></a><span class="p">}</span>
<a name="line-190"></a>
<a name="line-191"></a><span class="kt">void</span> <span class="n">AdvPrintTask</span><span class="o">::</span><span class="n">printPhotos</span><span class="p">()</span>
<a name="line-192"></a><span class="p">{</span>
<a name="line-193"></a> <span class="n">AdvPrintPhotoSize</span><span class="o">*</span> <span class="k">const</span> <span class="n">layouts</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">outputLayouts</span><span class="p">;</span>
<a name="line-194"></a> <span class="n">QPrinter</span><span class="o">*</span> <span class="k">const</span> <span class="n">printer</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">outputPrinter</span><span class="p">;</span>
<a name="line-195"></a>
<a name="line-196"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">layouts</span><span class="p">);</span>
<a name="line-197"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">printer</span><span class="p">);</span>
<a name="line-198"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">layouts</span><span class="o">-&gt;</span><span class="n">m_layouts</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-199"></a>
<a name="line-200"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">AdvPrintPhoto</span><span class="o">*&gt;</span> <span class="n">photos</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">;</span>
<a name="line-201"></a> <span class="n">QPainter</span> <span class="n">p</span><span class="p">;</span>
<a name="line-202"></a> <span class="n">p</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="n">printer</span><span class="p">);</span>
<a name="line-203"></a>
<a name="line-204"></a> <span class="kt">int</span> <span class="n">current</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-205"></a> <span class="kt">int</span> <span class="n">pageCount</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-206"></a> <span class="kt">bool</span> <span class="n">printing</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-207"></a>
<a name="line-208"></a> <span class="k">while</span> <span class="p">(</span><span class="n">printing</span><span class="p">)</span>
<a name="line-209"></a> <span class="p">{</span>
<a name="line-210"></a> <span class="n">signalMessage</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Processing page %1&quot;</span><span class="p">,</span> <span class="n">pageCount</span><span class="p">),</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-211"></a>
<a name="line-212"></a> <span class="n">printing</span> <span class="o">=</span> <span class="n">paintOnePage</span><span class="p">(</span><span class="n">p</span><span class="p">,</span>
<a name="line-213"></a> <span class="n">photos</span><span class="p">,</span>
<a name="line-214"></a> <span class="n">layouts</span><span class="o">-&gt;</span><span class="n">m_layouts</span><span class="p">,</span>
<a name="line-215"></a> <span class="n">current</span><span class="p">,</span>
<a name="line-216"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">disableCrop</span><span class="p">);</span>
<a name="line-217"></a>
<a name="line-218"></a> <span class="k">if</span> <span class="p">(</span><span class="n">printing</span><span class="p">)</span>
<a name="line-219"></a> <span class="p">{</span>
<a name="line-220"></a> <span class="n">printer</span><span class="o">-&gt;</span><span class="n">newPage</span><span class="p">();</span>
<a name="line-221"></a> <span class="p">}</span>
<a name="line-222"></a>
<a name="line-223"></a> <span class="n">pageCount</span><span class="o">++</span><span class="p">;</span>
<a name="line-224"></a> <span class="n">emit</span> <span class="nf">signalProgress</span><span class="p">(</span><span class="n">current</span><span class="p">);</span>
<a name="line-225"></a>
<a name="line-226"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_cancel</span><span class="p">)</span>
<a name="line-227"></a> <span class="p">{</span>
<a name="line-228"></a> <span class="n">printer</span><span class="o">-&gt;</span><span class="n">abort</span><span class="p">();</span>
<a name="line-229"></a> <span class="n">signalMessage</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Printing canceled&quot;</span><span class="p">),</span> <span class="nb">true</span><span class="p">);</span>
<a name="line-230"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-231"></a> <span class="p">}</span>
<a name="line-232"></a> <span class="p">}</span>
<a name="line-233"></a>
<a name="line-234"></a> <span class="n">p</span><span class="p">.</span><span class="n">end</span><span class="p">();</span>
<a name="line-235"></a><span class="p">}</span>
<a name="line-236"></a>
<a name="line-237"></a><span class="n">QStringList</span> <span class="n">AdvPrintTask</span><span class="o">::</span><span class="n">printPhotosToFile</span><span class="p">()</span>
<a name="line-238"></a><span class="p">{</span>
<a name="line-239"></a> <span class="n">AdvPrintPhotoSize</span><span class="o">*</span> <span class="k">const</span> <span class="n">layouts</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">outputLayouts</span><span class="p">;</span>
<a name="line-240"></a> <span class="n">QString</span> <span class="n">dir</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">outputPath</span><span class="p">;</span>
<a name="line-241"></a>
<a name="line-242"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">layouts</span><span class="p">);</span>
<a name="line-243"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="o">!</span><span class="n">dir</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">());</span>
<a name="line-244"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">layouts</span><span class="o">-&gt;</span><span class="n">m_layouts</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-245"></a>
<a name="line-246"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">AdvPrintPhoto</span><span class="o">*&gt;</span> <span class="n">photos</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">;</span>
<a name="line-247"></a>
<a name="line-248"></a> <span class="n">QStringList</span> <span class="n">files</span><span class="p">;</span>
<a name="line-249"></a> <span class="kt">int</span> <span class="n">current</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-250"></a> <span class="kt">int</span> <span class="n">pageCount</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-251"></a> <span class="kt">bool</span> <span class="n">printing</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-252"></a> <span class="n">QRect</span><span class="o">*</span> <span class="k">const</span> <span class="n">srcPage</span> <span class="o">=</span> <span class="n">layouts</span><span class="o">-&gt;</span><span class="n">m_layouts</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<a name="line-253"></a>
<a name="line-254"></a> <span class="k">while</span> <span class="p">(</span><span class="n">printing</span><span class="p">)</span>
<a name="line-255"></a> <span class="p">{</span>
<a name="line-256"></a> <span class="c1">// make a pixmap to save to file. Make it just big enough to show the</span>
<a name="line-257"></a> <span class="c1">// highest-dpi image on the page without losing data.</span>
<a name="line-258"></a>
<a name="line-259"></a> <span class="kt">double</span> <span class="n">dpi</span> <span class="o">=</span> <span class="n">layouts</span><span class="o">-&gt;</span><span class="n">m_dpi</span><span class="p">;</span>
<a name="line-260"></a>
<a name="line-261"></a> <span class="k">if</span> <span class="p">(</span><span class="n">dpi</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">)</span>
<a name="line-262"></a> <span class="p">{</span>
<a name="line-263"></a> <span class="n">dpi</span> <span class="o">=</span> <span class="n">getMaxDPI</span><span class="p">(</span><span class="n">photos</span><span class="p">,</span> <span class="n">layouts</span><span class="o">-&gt;</span><span class="n">m_layouts</span><span class="p">,</span> <span class="n">current</span><span class="p">)</span> <span class="o">*</span> <span class="mf">1.1</span><span class="p">;</span>
<a name="line-264"></a> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">dpi</span><span class="p">;</span> <span class="c1">// Remove clang warnings.</span>
<a name="line-265"></a> <span class="p">}</span>
<a name="line-266"></a>
<a name="line-267"></a> <span class="kt">int</span> <span class="n">w</span> <span class="o">=</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">normalizedInt</span><span class="p">(</span><span class="n">srcPage</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">());</span>
<a name="line-268"></a> <span class="kt">int</span> <span class="n">h</span> <span class="o">=</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">normalizedInt</span><span class="p">(</span><span class="n">srcPage</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">());</span>
<a name="line-269"></a>
<a name="line-270"></a> <span class="n">QImage</span> <span class="nf">image</span><span class="p">(</span><span class="n">w</span><span class="p">,</span> <span class="n">h</span><span class="p">,</span> <span class="n">QImage</span><span class="o">::</span><span class="n">Format_ARGB32_Premultiplied</span><span class="p">);</span>
<a name="line-271"></a> <span class="n">QPainter</span> <span class="n">painter</span><span class="p">;</span>
<a name="line-272"></a> <span class="n">painter</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="o">&amp;</span><span class="n">image</span><span class="p">);</span>
<a name="line-273"></a>
<a name="line-274"></a> <span class="n">QString</span> <span class="n">ext</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">format</span><span class="p">();</span>
<a name="line-275"></a> <span class="n">QString</span> <span class="n">name</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;output&quot;</span><span class="p">);</span>
<a name="line-276"></a> <span class="n">QString</span> <span class="n">filename</span> <span class="o">=</span> <span class="n">dir</span> <span class="o">+</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">)</span> <span class="o">+</span>
<a name="line-277"></a> <span class="n">name</span> <span class="o">+</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;_&#39;</span><span class="p">)</span> <span class="o">+</span>
<a name="line-278"></a> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">pageCount</span><span class="p">)</span> <span class="o">+</span>
<a name="line-279"></a> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;.&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">ext</span><span class="p">;</span>
<a name="line-280"></a>
<a name="line-281"></a> <span class="k">if</span> <span class="p">(</span><span class="n">QFile</span><span class="o">::</span><span class="n">exists</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
<a name="line-282"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">conflictRule</span> <span class="o">!=</span> <span class="n">FileSaveConflictBox</span><span class="o">::</span><span class="n">OVERWRITE</span><span class="p">)</span>
<a name="line-283"></a> <span class="p">{</span>
<a name="line-284"></a> <span class="n">filename</span> <span class="o">=</span> <span class="n">DFileOperations</span><span class="o">::</span><span class="n">getUniqueFileUrl</span><span class="p">(</span><span class="n">QUrl</span><span class="o">::</span><span class="n">fromLocalFile</span><span class="p">(</span><span class="n">filename</span><span class="p">)).</span><span class="n">toLocalFile</span><span class="p">();</span>
<a name="line-285"></a> <span class="p">}</span>
<a name="line-286"></a>
<a name="line-287"></a> <span class="n">signalMessage</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Processing page %1&quot;</span><span class="p">,</span> <span class="n">pageCount</span><span class="p">),</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-288"></a>
<a name="line-289"></a> <span class="n">printing</span> <span class="o">=</span> <span class="n">paintOnePage</span><span class="p">(</span><span class="n">painter</span><span class="p">,</span>
<a name="line-290"></a> <span class="n">photos</span><span class="p">,</span>
<a name="line-291"></a> <span class="n">layouts</span><span class="o">-&gt;</span><span class="n">m_layouts</span><span class="p">,</span>
<a name="line-292"></a> <span class="n">current</span><span class="p">,</span>
<a name="line-293"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">disableCrop</span><span class="p">);</span>
<a name="line-294"></a>
<a name="line-295"></a> <span class="n">painter</span><span class="p">.</span><span class="n">end</span><span class="p">();</span>
<a name="line-296"></a>
<a name="line-297"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">image</span><span class="p">.</span><span class="n">save</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="k">nullptr</span><span class="p">,</span> <span class="mi">100</span><span class="p">))</span>
<a name="line-298"></a> <span class="p">{</span>
<a name="line-299"></a> <span class="n">signalMessage</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Could not save file %1&quot;</span><span class="p">,</span> <span class="n">filename</span><span class="p">),</span> <span class="nb">true</span><span class="p">);</span>
<a name="line-300"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-301"></a> <span class="p">}</span>
<a name="line-302"></a> <span class="k">else</span>
<a name="line-303"></a> <span class="p">{</span>
<a name="line-304"></a> <span class="n">files</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">filename</span><span class="p">);</span>
<a name="line-305"></a> <span class="n">signalMessage</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Page %1 saved as %2&quot;</span><span class="p">,</span> <span class="n">pageCount</span><span class="p">,</span> <span class="n">filename</span><span class="p">),</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-306"></a> <span class="p">}</span>
<a name="line-307"></a>
<a name="line-308"></a> <span class="n">pageCount</span><span class="o">++</span><span class="p">;</span>
<a name="line-309"></a> <span class="n">emit</span> <span class="nf">signalProgress</span><span class="p">(</span><span class="n">current</span><span class="p">);</span>
<a name="line-310"></a>
<a name="line-311"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_cancel</span><span class="p">)</span>
<a name="line-312"></a> <span class="p">{</span>
<a name="line-313"></a> <span class="n">signalMessage</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Printing canceled&quot;</span><span class="p">),</span> <span class="nb">true</span><span class="p">);</span>
<a name="line-314"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-315"></a> <span class="p">}</span>
<a name="line-316"></a> <span class="p">}</span>
<a name="line-317"></a>
<a name="line-318"></a> <span class="k">return</span> <span class="n">files</span><span class="p">;</span>
<a name="line-319"></a><span class="p">}</span>
<a name="line-320"></a>
<a name="line-321"></a><span class="kt">bool</span> <span class="n">AdvPrintTask</span><span class="o">::</span><span class="n">paintOnePage</span><span class="p">(</span><span class="n">QPainter</span><span class="o">&amp;</span> <span class="n">p</span><span class="p">,</span>
<a name="line-322"></a> <span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">AdvPrintPhoto</span><span class="o">*&gt;&amp;</span> <span class="n">photos</span><span class="p">,</span>
<a name="line-323"></a> <span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QRect</span><span class="o">*&gt;&amp;</span> <span class="n">layouts</span><span class="p">,</span>
<a name="line-324"></a> <span class="kt">int</span><span class="o">&amp;</span> <span class="n">current</span><span class="p">,</span>
<a name="line-325"></a> <span class="kt">bool</span> <span class="n">cropDisabled</span><span class="p">,</span>
<a name="line-326"></a> <span class="kt">bool</span> <span class="n">useThumbnails</span><span class="p">)</span>
<a name="line-327"></a><span class="p">{</span>
<a name="line-328"></a> <span class="k">if</span> <span class="p">(</span><span class="n">layouts</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-329"></a> <span class="p">{</span>
<a name="line-330"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DPLUGIN_GENERIC_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid layout content&quot;</span><span class="p">;</span>
<a name="line-331"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-332"></a> <span class="p">}</span>
<a name="line-333"></a>
<a name="line-334"></a> <span class="k">if</span> <span class="p">(</span><span class="n">photos</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-335"></a> <span class="p">{</span>
<a name="line-336"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DPLUGIN_GENERIC_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;no photo to print&quot;</span><span class="p">;</span>
<a name="line-337"></a>
<a name="line-338"></a> <span class="c1">// no photos =&gt; last photo</span>
<a name="line-339"></a>
<a name="line-340"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-341"></a> <span class="p">}</span>
<a name="line-342"></a>
<a name="line-343"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QRect</span><span class="o">*&gt;::</span><span class="n">const_iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">layouts</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
<a name="line-344"></a> <span class="n">QRect</span><span class="o">*</span> <span class="k">const</span> <span class="n">srcPage</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">QRect</span><span class="o">*&gt;</span><span class="p">(</span><span class="o">*</span><span class="n">it</span><span class="p">);</span>
<a name="line-345"></a> <span class="o">++</span><span class="n">it</span><span class="p">;</span>
<a name="line-346"></a> <span class="n">QRect</span><span class="o">*</span> <span class="n">layout</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">QRect</span><span class="o">*&gt;</span><span class="p">(</span><span class="o">*</span><span class="n">it</span><span class="p">);</span>
<a name="line-347"></a>
<a name="line-348"></a> <span class="c1">// scale the page size to best fit the painter</span>
<a name="line-349"></a> <span class="c1">// size the rectangle based on the minimum image dimension</span>
<a name="line-350"></a>
<a name="line-351"></a> <span class="kt">int</span> <span class="n">destW</span> <span class="o">=</span> <span class="n">p</span><span class="p">.</span><span class="n">window</span><span class="p">().</span><span class="n">width</span><span class="p">();</span>
<a name="line-352"></a> <span class="kt">int</span> <span class="n">destH</span> <span class="o">=</span> <span class="n">p</span><span class="p">.</span><span class="n">window</span><span class="p">().</span><span class="n">height</span><span class="p">();</span>
<a name="line-353"></a> <span class="kt">int</span> <span class="n">srcW</span> <span class="o">=</span> <span class="n">srcPage</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">();</span>
<a name="line-354"></a> <span class="kt">int</span> <span class="n">srcH</span> <span class="o">=</span> <span class="n">srcPage</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">();</span>
<a name="line-355"></a>
<a name="line-356"></a> <span class="k">if</span> <span class="p">(</span><span class="n">destW</span> <span class="o">&lt;</span> <span class="n">destH</span><span class="p">)</span>
<a name="line-357"></a> <span class="p">{</span>
<a name="line-358"></a> <span class="n">destH</span> <span class="o">=</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">normalizedInt</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span> <span class="n">destW</span> <span class="o">*</span> <span class="p">((</span><span class="kt">double</span><span class="p">)</span> <span class="n">srcH</span> <span class="o">/</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span> <span class="n">srcW</span><span class="p">));</span>
<a name="line-359"></a>
<a name="line-360"></a> <span class="k">if</span> <span class="p">(</span><span class="n">destH</span> <span class="o">&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">window</span><span class="p">().</span><span class="n">height</span><span class="p">())</span>
<a name="line-361"></a> <span class="p">{</span>
<a name="line-362"></a> <span class="n">destH</span> <span class="o">=</span> <span class="n">p</span><span class="p">.</span><span class="n">window</span><span class="p">().</span><span class="n">height</span><span class="p">();</span>
<a name="line-363"></a> <span class="n">destW</span> <span class="o">=</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">normalizedInt</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span> <span class="n">destH</span> <span class="o">*</span> <span class="p">((</span><span class="kt">double</span><span class="p">)</span> <span class="n">srcW</span> <span class="o">/</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span> <span class="n">srcH</span><span class="p">));</span>
<a name="line-364"></a> <span class="p">}</span>
<a name="line-365"></a> <span class="p">}</span>
<a name="line-366"></a> <span class="k">else</span>
<a name="line-367"></a> <span class="p">{</span>
<a name="line-368"></a> <span class="n">destW</span> <span class="o">=</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">normalizedInt</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span> <span class="n">destH</span> <span class="o">*</span> <span class="p">((</span><span class="kt">double</span><span class="p">)</span> <span class="n">srcW</span> <span class="o">/</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span> <span class="n">srcH</span><span class="p">));</span>
<a name="line-369"></a>
<a name="line-370"></a> <span class="k">if</span> <span class="p">(</span><span class="n">destW</span> <span class="o">&gt;</span> <span class="n">p</span><span class="p">.</span><span class="n">window</span><span class="p">().</span><span class="n">width</span><span class="p">())</span>
<a name="line-371"></a> <span class="p">{</span>
<a name="line-372"></a> <span class="n">destW</span> <span class="o">=</span> <span class="n">p</span><span class="p">.</span><span class="n">window</span><span class="p">().</span><span class="n">width</span><span class="p">();</span>
<a name="line-373"></a> <span class="n">destH</span> <span class="o">=</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">normalizedInt</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span> <span class="n">destW</span> <span class="o">*</span> <span class="p">((</span><span class="kt">double</span><span class="p">)</span> <span class="n">srcH</span> <span class="o">/</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span> <span class="n">srcW</span><span class="p">));</span>
<a name="line-374"></a> <span class="p">}</span>
<a name="line-375"></a> <span class="p">}</span>
<a name="line-376"></a>
<a name="line-377"></a><span class="hll"> <span class="kt">double</span> <span class="n">xRatio</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span> <span class="n">destW</span> <span class="o">/</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span> <span class="n">srcPage</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">();</span><span class='error2'>&lt;--- Shadowed declaration</span>
</span><a name="line-378"></a><span class="hll"> <span class="kt">double</span> <span class="n">yRatio</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span> <span class="n">destH</span> <span class="o">/</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span> <span class="n">srcPage</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">();</span><span class='error2'>&lt;--- Shadowed declaration</span>
</span><a name="line-379"></a> <span class="kt">int</span> <span class="n">left</span> <span class="o">=</span> <span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">window</span><span class="p">().</span><span class="n">width</span><span class="p">()</span> <span class="o">-</span> <span class="n">destW</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">;</span>
<a name="line-380"></a> <span class="kt">int</span> <span class="n">top</span> <span class="o">=</span> <span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">window</span><span class="p">().</span><span class="n">height</span><span class="p">()</span> <span class="o">-</span> <span class="n">destH</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">;</span>
<a name="line-381"></a>
<a name="line-382"></a> <span class="c1">// FIXME: may not want to erase the background page</span>
<a name="line-383"></a>
<a name="line-384"></a> <span class="n">p</span><span class="p">.</span><span class="n">eraseRect</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">top</span><span class="p">,</span>
<a name="line-385"></a> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">normalizedInt</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span> <span class="n">srcPage</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">()</span> <span class="o">*</span> <span class="n">xRatio</span><span class="p">),</span>
<a name="line-386"></a> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">normalizedInt</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span> <span class="n">srcPage</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">()</span> <span class="o">*</span> <span class="n">yRatio</span><span class="p">));</span>
<a name="line-387"></a>
<a name="line-388"></a> <span class="k">for</span> <span class="p">(</span> <span class="p">;</span> <span class="p">(</span><span class="n">current</span> <span class="o">&lt;</span> <span class="n">photos</span><span class="p">.</span><span class="n">count</span><span class="p">())</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">m_cancel</span> <span class="p">;</span> <span class="o">++</span><span class="n">current</span><span class="p">)</span>
<a name="line-389"></a> <span class="p">{</span>
<a name="line-390"></a> <span class="n">AdvPrintPhoto</span><span class="o">*</span> <span class="k">const</span> <span class="n">photo</span> <span class="o">=</span> <span class="n">photos</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">current</span><span class="p">);</span>
<a name="line-391"></a>
<a name="line-392"></a> <span class="c1">// crop</span>
<a name="line-393"></a>
<a name="line-394"></a> <span class="n">QImage</span> <span class="n">img</span><span class="p">;</span>
<a name="line-395"></a>
<a name="line-396"></a> <span class="k">if</span> <span class="p">(</span><span class="n">useThumbnails</span><span class="p">)</span>
<a name="line-397"></a> <span class="p">{</span>
<a name="line-398"></a> <span class="n">img</span> <span class="o">=</span> <span class="n">photo</span><span class="o">-&gt;</span><span class="n">thumbnail</span><span class="p">().</span><span class="n">copyQImage</span><span class="p">();</span>
<a name="line-399"></a> <span class="p">}</span>
<a name="line-400"></a> <span class="k">else</span>
<a name="line-401"></a> <span class="p">{</span>
<a name="line-402"></a> <span class="n">img</span> <span class="o">=</span> <span class="n">photo</span><span class="o">-&gt;</span><span class="n">loadPhoto</span><span class="p">().</span><span class="n">copyQImage</span><span class="p">();</span>
<a name="line-403"></a> <span class="p">}</span>
<a name="line-404"></a>
<a name="line-405"></a> <span class="c1">// next, do we rotate?</span>
<a name="line-406"></a>
<a name="line-407"></a> <span class="k">if</span> <span class="p">(</span><span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_rotation</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-408"></a> <span class="p">{</span>
<a name="line-409"></a> <span class="c1">// rotate</span>
<a name="line-410"></a>
<a name="line-411"></a> <span class="n">QMatrix</span> <span class="n">matrix</span><span class="p">;</span>
<a name="line-412"></a> <span class="n">matrix</span><span class="p">.</span><span class="n">rotate</span><span class="p">(</span><span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_rotation</span><span class="p">);</span>
<a name="line-413"></a> <span class="n">img</span> <span class="o">=</span> <span class="n">img</span><span class="p">.</span><span class="n">transformed</span><span class="p">(</span><span class="n">matrix</span><span class="p">);</span>
<a name="line-414"></a> <span class="p">}</span>
<a name="line-415"></a>
<a name="line-416"></a> <span class="k">if</span> <span class="p">(</span><span class="n">useThumbnails</span><span class="p">)</span>
<a name="line-417"></a> <span class="p">{</span>
<a name="line-418"></a> <span class="c1">// scale the crop region to thumbnail coords</span>
<a name="line-419"></a>
<a name="line-420"></a><span class="hll"> <span class="kt">double</span> <span class="n">xRatio</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">;</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-421"></a><span class="hll"> <span class="kt">double</span> <span class="n">yRatio</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">;</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-422"></a>
<a name="line-423"></a> <span class="k">if</span> <span class="p">(</span><span class="n">photo</span><span class="o">-&gt;</span><span class="n">thumbnail</span><span class="p">().</span><span class="n">width</span><span class="p">()</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-424"></a> <span class="p">{</span>
<a name="line-425"></a> <span class="n">xRatio</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">photo</span><span class="o">-&gt;</span><span class="n">thumbnail</span><span class="p">().</span><span class="n">width</span><span class="p">()</span> <span class="o">/</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">photo</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">();</span>
<a name="line-426"></a> <span class="p">}</span>
<a name="line-427"></a>
<a name="line-428"></a> <span class="k">if</span> <span class="p">(</span><span class="n">photo</span><span class="o">-&gt;</span><span class="n">thumbnail</span><span class="p">().</span><span class="n">height</span><span class="p">()</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-429"></a> <span class="p">{</span>
<a name="line-430"></a> <span class="n">yRatio</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">photo</span><span class="o">-&gt;</span><span class="n">thumbnail</span><span class="p">().</span><span class="n">height</span><span class="p">()</span> <span class="o">/</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">photo</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">();</span>
<a name="line-431"></a> <span class="p">}</span>
<a name="line-432"></a>
<a name="line-433"></a> <span class="kt">int</span> <span class="n">x1</span> <span class="o">=</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">normalizedInt</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_cropRegion</span><span class="p">.</span><span class="n">left</span><span class="p">()</span> <span class="o">*</span> <span class="n">xRatio</span><span class="p">);</span>
<a name="line-434"></a> <span class="kt">int</span> <span class="n">y1</span> <span class="o">=</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">normalizedInt</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_cropRegion</span><span class="p">.</span><span class="n">top</span><span class="p">()</span> <span class="o">*</span> <span class="n">yRatio</span><span class="p">);</span>
<a name="line-435"></a> <span class="kt">int</span> <span class="n">w</span> <span class="o">=</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">normalizedInt</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_cropRegion</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">*</span> <span class="n">xRatio</span><span class="p">);</span>
<a name="line-436"></a> <span class="kt">int</span> <span class="n">h</span> <span class="o">=</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">normalizedInt</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_cropRegion</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">*</span> <span class="n">yRatio</span><span class="p">);</span>
<a name="line-437"></a> <span class="n">img</span> <span class="o">=</span> <span class="n">img</span><span class="p">.</span><span class="n">copy</span><span class="p">(</span><span class="n">QRect</span><span class="p">(</span><span class="n">x1</span><span class="p">,</span> <span class="n">y1</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">h</span><span class="p">));</span>
<a name="line-438"></a> <span class="p">}</span>
<a name="line-439"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">cropDisabled</span><span class="p">)</span>
<a name="line-440"></a> <span class="p">{</span>
<a name="line-441"></a> <span class="n">img</span> <span class="o">=</span> <span class="n">img</span><span class="p">.</span><span class="n">copy</span><span class="p">(</span><span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_cropRegion</span><span class="p">);</span>
<a name="line-442"></a> <span class="p">}</span>
<a name="line-443"></a>
<a name="line-444"></a> <span class="kt">int</span> <span class="n">x1</span> <span class="o">=</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">normalizedInt</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span> <span class="n">layout</span><span class="o">-&gt;</span><span class="n">left</span><span class="p">()</span> <span class="o">*</span> <span class="n">xRatio</span><span class="p">);</span>
<a name="line-445"></a> <span class="kt">int</span> <span class="n">y1</span> <span class="o">=</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">normalizedInt</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span> <span class="n">layout</span><span class="o">-&gt;</span><span class="n">top</span><span class="p">()</span> <span class="o">*</span> <span class="n">yRatio</span><span class="p">);</span>
<a name="line-446"></a> <span class="kt">int</span> <span class="n">w</span> <span class="o">=</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">normalizedInt</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span> <span class="n">layout</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">()</span> <span class="o">*</span> <span class="n">xRatio</span><span class="p">);</span>
<a name="line-447"></a> <span class="kt">int</span> <span class="n">h</span> <span class="o">=</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">normalizedInt</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span> <span class="n">layout</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">()</span> <span class="o">*</span> <span class="n">yRatio</span><span class="p">);</span>
<a name="line-448"></a>
<a name="line-449"></a> <span class="n">QRect</span> <span class="n">rectViewPort</span> <span class="o">=</span> <span class="n">p</span><span class="p">.</span><span class="n">viewport</span><span class="p">();</span>
<a name="line-450"></a> <span class="n">QRect</span> <span class="n">newRectViewPort</span> <span class="o">=</span> <span class="n">QRect</span><span class="p">(</span><span class="n">x1</span> <span class="o">+</span> <span class="n">left</span><span class="p">,</span> <span class="n">y1</span> <span class="o">+</span> <span class="n">top</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">h</span><span class="p">);</span>
<a name="line-451"></a> <span class="n">QSize</span> <span class="n">imageSize</span> <span class="o">=</span> <span class="n">img</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
<a name="line-452"></a><span class="cm">/*</span>
<a name="line-453"></a><span class="cm"> qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;Image &quot;</span>
<a name="line-454"></a><span class="cm"> &lt;&lt; photo-&gt;filename</span>
<a name="line-455"></a><span class="cm"> &lt;&lt; &quot; size &quot; &lt;&lt; imageSize;</span>
<a name="line-456"></a><span class="cm"> qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;viewport size &quot;</span>
<a name="line-457"></a><span class="cm"> &lt;&lt; newRectViewPort.size();</span>
<a name="line-458"></a><span class="cm">*/</span>
<a name="line-459"></a> <span class="n">QPoint</span> <span class="n">point</span><span class="p">;</span>
<a name="line-460"></a>
<a name="line-461"></a> <span class="k">if</span> <span class="p">(</span><span class="n">cropDisabled</span><span class="p">)</span>
<a name="line-462"></a> <span class="p">{</span>
<a name="line-463"></a> <span class="n">imageSize</span><span class="p">.</span><span class="n">scale</span><span class="p">(</span><span class="n">newRectViewPort</span><span class="p">.</span><span class="n">size</span><span class="p">(),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">KeepAspectRatio</span><span class="p">);</span>
<a name="line-464"></a> <span class="kt">int</span> <span class="n">spaceLeft</span> <span class="o">=</span> <span class="p">(</span><span class="n">newRectViewPort</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">-</span> <span class="n">imageSize</span><span class="p">.</span><span class="n">width</span><span class="p">())</span> <span class="o">/</span> <span class="mi">2</span><span class="p">;</span>
<a name="line-465"></a> <span class="kt">int</span> <span class="n">spaceTop</span> <span class="o">=</span> <span class="p">(</span><span class="n">newRectViewPort</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">-</span> <span class="n">imageSize</span><span class="p">.</span><span class="n">height</span><span class="p">())</span> <span class="o">/</span> <span class="mi">2</span><span class="p">;</span>
<a name="line-466"></a> <span class="n">p</span><span class="p">.</span><span class="n">setViewport</span><span class="p">(</span><span class="n">spaceLeft</span> <span class="o">+</span> <span class="n">newRectViewPort</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span>
<a name="line-467"></a> <span class="n">spaceTop</span> <span class="o">+</span> <span class="n">newRectViewPort</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-468"></a> <span class="n">imageSize</span><span class="p">.</span><span class="n">width</span><span class="p">(),</span>
<a name="line-469"></a> <span class="n">imageSize</span><span class="p">.</span><span class="n">height</span><span class="p">());</span>
<a name="line-470"></a> <span class="n">point</span> <span class="o">=</span> <span class="n">QPoint</span><span class="p">(</span><span class="n">newRectViewPort</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">+</span> <span class="n">spaceLeft</span> <span class="o">+</span> <span class="n">imageSize</span><span class="p">.</span><span class="n">width</span><span class="p">(),</span>
<a name="line-471"></a> <span class="n">newRectViewPort</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">+</span> <span class="n">spaceTop</span> <span class="o">+</span> <span class="n">imageSize</span><span class="p">.</span><span class="n">height</span><span class="p">());</span>
<a name="line-472"></a> <span class="p">}</span>
<a name="line-473"></a> <span class="k">else</span>
<a name="line-474"></a> <span class="p">{</span>
<a name="line-475"></a> <span class="n">p</span><span class="p">.</span><span class="n">setViewport</span><span class="p">(</span><span class="n">newRectViewPort</span><span class="p">);</span>
<a name="line-476"></a> <span class="n">point</span> <span class="o">=</span> <span class="n">QPoint</span><span class="p">(</span><span class="n">x1</span> <span class="o">+</span> <span class="n">left</span> <span class="o">+</span> <span class="n">w</span><span class="p">,</span> <span class="n">y1</span> <span class="o">+</span> <span class="n">top</span> <span class="o">+</span> <span class="n">w</span><span class="p">);</span>
<a name="line-477"></a> <span class="p">}</span>
<a name="line-478"></a>
<a name="line-479"></a> <span class="n">QRect</span> <span class="n">rectWindow</span> <span class="o">=</span> <span class="n">p</span><span class="p">.</span><span class="n">window</span><span class="p">();</span>
<a name="line-480"></a> <span class="n">p</span><span class="p">.</span><span class="n">setWindow</span><span class="p">(</span><span class="n">img</span><span class="p">.</span><span class="n">rect</span><span class="p">());</span>
<a name="line-481"></a> <span class="n">p</span><span class="p">.</span><span class="n">drawImage</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">img</span><span class="p">);</span>
<a name="line-482"></a> <span class="n">p</span><span class="p">.</span><span class="n">setViewport</span><span class="p">(</span><span class="n">rectViewPort</span><span class="p">);</span>
<a name="line-483"></a> <span class="n">p</span><span class="p">.</span><span class="n">setWindow</span><span class="p">(</span><span class="n">rectWindow</span><span class="p">);</span>
<a name="line-484"></a> <span class="n">p</span><span class="p">.</span><span class="n">setBrushOrigin</span><span class="p">(</span><span class="n">point</span><span class="p">);</span>
<a name="line-485"></a>
<a name="line-486"></a> <span class="k">if</span> <span class="p">(</span><span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_pAdvPrintCaptionInfo</span> <span class="o">&amp;&amp;</span>
<a name="line-487"></a> <span class="p">(</span><span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_pAdvPrintCaptionInfo</span><span class="o">-&gt;</span><span class="n">m_captionType</span> <span class="o">!=</span> <span class="n">AdvPrintSettings</span><span class="o">::</span><span class="n">NONE</span><span class="p">))</span>
<a name="line-488"></a> <span class="p">{</span>
<a name="line-489"></a> <span class="n">p</span><span class="p">.</span><span class="n">save</span><span class="p">();</span>
<a name="line-490"></a> <span class="n">QString</span> <span class="n">caption</span> <span class="o">=</span> <span class="n">AdvPrintCaptionPage</span><span class="o">::</span><span class="n">captionFormatter</span><span class="p">(</span><span class="n">photo</span><span class="p">);</span>
<a name="line-491"></a>
<a name="line-492"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_DPLUGIN_GENERIC_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Caption for&quot;</span>
<a name="line-493"></a> <span class="o">&lt;&lt;</span> <span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_url</span>
<a name="line-494"></a> <span class="o">&lt;&lt;</span> <span class="s">&quot;:&quot;</span>
<a name="line-495"></a> <span class="o">&lt;&lt;</span> <span class="n">caption</span><span class="p">;</span>
<a name="line-496"></a>
<a name="line-497"></a> <span class="c1">// draw the text at (0,0), but we will translate and rotate the world</span>
<a name="line-498"></a> <span class="c1">// before drawing so the text will be in the correct location</span>
<a name="line-499"></a> <span class="c1">// next, do we rotate?</span>
<a name="line-500"></a>
<a name="line-501"></a> <span class="kt">int</span> <span class="n">captionW</span> <span class="o">=</span> <span class="n">w</span> <span class="o">-</span> <span class="mi">2</span><span class="p">;</span>
<a name="line-502"></a> <span class="kt">double</span> <span class="n">ratio</span> <span class="o">=</span> <span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_pAdvPrintCaptionInfo</span><span class="o">-&gt;</span><span class="n">m_captionSize</span> <span class="o">*</span> <span class="mf">0.01</span><span class="p">;</span>
<a name="line-503"></a> <span class="kt">int</span> <span class="n">captionH</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">qMin</span><span class="p">(</span><span class="n">w</span><span class="p">,</span> <span class="n">h</span><span class="p">)</span> <span class="o">*</span> <span class="n">ratio</span><span class="p">);</span>
<a name="line-504"></a> <span class="kt">int</span> <span class="n">orientatation</span> <span class="o">=</span> <span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_rotation</span><span class="p">;</span>
<a name="line-505"></a> <span class="kt">int</span> <span class="n">exifOrientation</span> <span class="o">=</span> <span class="n">DMetadata</span><span class="o">::</span><span class="n">ORIENTATION_NORMAL</span><span class="p">;</span>
<a name="line-506"></a> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">exifOrientation</span><span class="p">;</span> <span class="c1">// prevent cppcheck warning.</span>
<a name="line-507"></a>
<a name="line-508"></a>
<a name="line-509"></a> <span class="k">if</span> <span class="p">(</span><span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_iface</span><span class="p">)</span>
<a name="line-510"></a> <span class="p">{</span>
<a name="line-511"></a> <span class="n">DItemInfo</span> <span class="n">info</span><span class="p">(</span><span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_iface</span><span class="o">-&gt;</span><span class="n">itemInfo</span><span class="p">(</span><span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_url</span><span class="p">));</span>
<a name="line-512"></a> <span class="n">exifOrientation</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">orientation</span><span class="p">();</span>
<a name="line-513"></a> <span class="p">}</span>
<a name="line-514"></a> <span class="k">else</span>
<a name="line-515"></a> <span class="p">{</span>
<a name="line-516"></a> <span class="n">DMetadata</span> <span class="n">meta</span><span class="p">(</span><span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_url</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">());</span>
<a name="line-517"></a> <span class="n">exifOrientation</span> <span class="o">=</span> <span class="n">meta</span><span class="p">.</span><span class="n">getItemOrientation</span><span class="p">();</span>
<a name="line-518"></a> <span class="p">}</span>
<a name="line-519"></a>
<a name="line-520"></a> <span class="c1">// ROT_90_HFLIP .. ROT_270</span>
<a name="line-521"></a>
<a name="line-522"></a> <span class="k">if</span> <span class="p">(</span>
<a name="line-523"></a> <span class="p">(</span><span class="n">exifOrientation</span> <span class="o">==</span> <span class="n">DMetadata</span><span class="o">::</span><span class="n">ORIENTATION_ROT_90_HFLIP</span><span class="p">)</span> <span class="o">||</span>
<a name="line-524"></a> <span class="p">(</span><span class="n">exifOrientation</span> <span class="o">==</span> <span class="n">DMetadata</span><span class="o">::</span><span class="n">ORIENTATION_ROT_90</span><span class="p">)</span> <span class="o">||</span>
<a name="line-525"></a> <span class="p">(</span><span class="n">exifOrientation</span> <span class="o">==</span> <span class="n">DMetadata</span><span class="o">::</span><span class="n">ORIENTATION_ROT_90_VFLIP</span><span class="p">)</span> <span class="o">||</span>
<a name="line-526"></a> <span class="p">(</span><span class="n">exifOrientation</span> <span class="o">==</span> <span class="n">DMetadata</span><span class="o">::</span><span class="n">ORIENTATION_ROT_270</span><span class="p">)</span>
<a name="line-527"></a> <span class="p">)</span>
<a name="line-528"></a> <span class="p">{</span>
<a name="line-529"></a> <span class="n">orientatation</span> <span class="o">=</span> <span class="p">(</span><span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_rotation</span> <span class="o">+</span> <span class="mi">270</span><span class="p">)</span> <span class="o">%</span> <span class="mi">360</span><span class="p">;</span> <span class="c1">// -90 degrees</span>
<a name="line-530"></a> <span class="p">}</span>
<a name="line-531"></a>
<a name="line-532"></a> <span class="k">if</span> <span class="p">((</span><span class="n">orientatation</span> <span class="o">==</span> <span class="mi">90</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">orientatation</span> <span class="o">==</span> <span class="mi">270</span><span class="p">))</span>
<a name="line-533"></a> <span class="p">{</span>
<a name="line-534"></a> <span class="n">captionW</span> <span class="o">=</span> <span class="n">h</span><span class="p">;</span>
<a name="line-535"></a> <span class="p">}</span>
<a name="line-536"></a>
<a name="line-537"></a> <span class="n">p</span><span class="p">.</span><span class="n">rotate</span><span class="p">(</span><span class="n">orientatation</span><span class="p">);</span>
<a name="line-538"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_DPLUGIN_GENERIC_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;rotation &quot;</span>
<a name="line-539"></a> <span class="o">&lt;&lt;</span> <span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_rotation</span>
<a name="line-540"></a> <span class="o">&lt;&lt;</span> <span class="s">&quot; orientation &quot;</span>
<a name="line-541"></a> <span class="o">&lt;&lt;</span> <span class="n">orientatation</span><span class="p">;</span>
<a name="line-542"></a> <span class="kt">int</span> <span class="n">tx</span> <span class="o">=</span> <span class="n">left</span><span class="p">;</span>
<a name="line-543"></a> <span class="kt">int</span> <span class="n">ty</span> <span class="o">=</span> <span class="n">top</span><span class="p">;</span>
<a name="line-544"></a>
<a name="line-545"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">orientatation</span><span class="p">)</span>
<a name="line-546"></a> <span class="p">{</span>
<a name="line-547"></a> <span class="k">case</span> <span class="mi">0</span><span class="o">:</span>
<a name="line-548"></a> <span class="p">{</span>
<a name="line-549"></a> <span class="n">tx</span> <span class="o">+=</span> <span class="n">x1</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-550"></a> <span class="n">ty</span> <span class="o">+=</span> <span class="n">y1</span> <span class="o">+</span> <span class="p">(</span><span class="n">h</span> <span class="o">-</span> <span class="n">captionH</span> <span class="o">-</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-551"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-552"></a> <span class="p">}</span>
<a name="line-553"></a>
<a name="line-554"></a> <span class="k">case</span> <span class="mi">90</span><span class="o">:</span>
<a name="line-555"></a> <span class="p">{</span>
<a name="line-556"></a> <span class="n">tx</span> <span class="o">=</span> <span class="n">top</span> <span class="o">+</span> <span class="n">y1</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-557"></a> <span class="n">ty</span> <span class="o">=</span> <span class="o">-</span><span class="n">left</span> <span class="o">-</span> <span class="n">x1</span> <span class="o">-</span> <span class="n">captionH</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-558"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-559"></a> <span class="p">}</span>
<a name="line-560"></a>
<a name="line-561"></a> <span class="k">case</span> <span class="mi">180</span><span class="o">:</span>
<a name="line-562"></a> <span class="p">{</span>
<a name="line-563"></a> <span class="n">tx</span> <span class="o">=</span> <span class="o">-</span><span class="n">left</span> <span class="o">-</span> <span class="n">x1</span> <span class="o">-</span> <span class="n">w</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-564"></a> <span class="n">ty</span> <span class="o">=</span> <span class="o">-</span><span class="n">top</span> <span class="o">-</span> <span class="n">y1</span> <span class="o">-</span> <span class="p">(</span><span class="n">captionH</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-565"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-566"></a> <span class="p">}</span>
<a name="line-567"></a>
<a name="line-568"></a> <span class="k">case</span> <span class="mi">270</span><span class="o">:</span>
<a name="line-569"></a> <span class="p">{</span>
<a name="line-570"></a> <span class="n">tx</span> <span class="o">=</span> <span class="o">-</span><span class="n">top</span> <span class="o">-</span> <span class="n">y1</span> <span class="o">-</span> <span class="n">h</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-571"></a> <span class="n">ty</span> <span class="o">=</span> <span class="n">left</span> <span class="o">+</span> <span class="n">x1</span> <span class="o">+</span> <span class="p">(</span><span class="n">w</span> <span class="o">-</span> <span class="n">captionH</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-572"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-573"></a> <span class="p">}</span>
<a name="line-574"></a> <span class="p">}</span>
<a name="line-575"></a>
<a name="line-576"></a> <span class="n">p</span><span class="p">.</span><span class="n">translate</span><span class="p">(</span><span class="n">tx</span><span class="p">,</span> <span class="n">ty</span><span class="p">);</span>
<a name="line-577"></a> <span class="n">printCaption</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">photo</span><span class="p">,</span> <span class="n">captionW</span><span class="p">,</span> <span class="n">captionH</span><span class="p">,</span> <span class="n">caption</span><span class="p">);</span>
<a name="line-578"></a> <span class="n">p</span><span class="p">.</span><span class="n">restore</span><span class="p">();</span>
<a name="line-579"></a> <span class="p">}</span>
<a name="line-580"></a>
<a name="line-581"></a> <span class="c1">// iterate to the next position</span>
<a name="line-582"></a>
<a name="line-583"></a> <span class="o">++</span><span class="n">it</span><span class="p">;</span>
<a name="line-584"></a> <span class="n">layout</span> <span class="o">=</span> <span class="p">(</span><span class="n">it</span> <span class="o">==</span> <span class="n">layouts</span><span class="p">.</span><span class="n">end</span><span class="p">())</span> <span class="o">?</span> <span class="k">nullptr</span> <span class="o">:</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">QRect</span><span class="o">*&gt;</span><span class="p">(</span><span class="o">*</span><span class="n">it</span><span class="p">);</span>
<a name="line-585"></a>
<a name="line-586"></a> <span class="k">if</span> <span class="p">(</span><span class="n">layout</span> <span class="o">==</span> <span class="k">nullptr</span><span class="p">)</span>
<a name="line-587"></a> <span class="p">{</span>
<a name="line-588"></a> <span class="n">current</span><span class="o">++</span><span class="p">;</span>
<a name="line-589"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-590"></a> <span class="p">}</span>
<a name="line-591"></a> <span class="p">}</span>
<a name="line-592"></a>
<a name="line-593"></a> <span class="c1">// did we print the last photo?</span>
<a name="line-594"></a>
<a name="line-595"></a> <span class="k">return</span> <span class="p">(</span><span class="n">current</span> <span class="o">&lt;</span> <span class="n">photos</span><span class="p">.</span><span class="n">count</span><span class="p">());</span>
<a name="line-596"></a><span class="p">}</span>
<a name="line-597"></a>
<a name="line-598"></a><span class="kt">double</span> <span class="n">AdvPrintTask</span><span class="o">::</span><span class="n">getMaxDPI</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">AdvPrintPhoto</span><span class="o">*&gt;&amp;</span> <span class="n">photos</span><span class="p">,</span>
<a name="line-599"></a> <span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QRect</span><span class="o">*&gt;&amp;</span> <span class="n">layouts</span><span class="p">,</span>
<a name="line-600"></a> <span class="kt">int</span> <span class="n">current</span><span class="p">)</span>
<a name="line-601"></a><span class="p">{</span>
<a name="line-602"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">layouts</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-603"></a>
<a name="line-604"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QRect</span><span class="o">*&gt;::</span><span class="n">const_iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">layouts</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
<a name="line-605"></a> <span class="n">QRect</span><span class="o">*</span> <span class="n">layout</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">QRect</span><span class="o">*&gt;</span><span class="p">(</span><span class="o">*</span><span class="n">it</span><span class="p">);</span>
<a name="line-606"></a> <span class="kt">double</span> <span class="n">maxDPI</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">;</span>
<a name="line-607"></a>
<a name="line-608"></a> <span class="k">for</span> <span class="p">(</span> <span class="p">;</span> <span class="n">current</span> <span class="o">&lt;</span> <span class="n">photos</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">current</span><span class="p">)</span>
<a name="line-609"></a> <span class="p">{</span>
<a name="line-610"></a> <span class="n">AdvPrintPhoto</span><span class="o">*</span> <span class="k">const</span> <span class="n">photo</span> <span class="o">=</span> <span class="n">photos</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">current</span><span class="p">);</span>
<a name="line-611"></a> <span class="kt">double</span> <span class="n">dpi</span> <span class="o">=</span> <span class="p">((</span><span class="kt">double</span><span class="p">)</span> <span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_cropRegion</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">+</span>
<a name="line-612"></a> <span class="p">(</span><span class="kt">double</span><span class="p">)</span> <span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_cropRegion</span><span class="p">.</span><span class="n">height</span><span class="p">())</span> <span class="o">/</span>
<a name="line-613"></a> <span class="p">(((</span><span class="kt">double</span><span class="p">)</span> <span class="n">layout</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">()</span> <span class="o">/</span> <span class="mf">1000.0</span><span class="p">)</span> <span class="o">+</span>
<a name="line-614"></a> <span class="p">((</span><span class="kt">double</span><span class="p">)</span> <span class="n">layout</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">()</span> <span class="o">/</span> <span class="mf">1000.0</span><span class="p">));</span>
<a name="line-615"></a>
<a name="line-616"></a> <span class="k">if</span> <span class="p">(</span><span class="n">dpi</span> <span class="o">&gt;</span> <span class="n">maxDPI</span><span class="p">)</span>
<a name="line-617"></a> <span class="n">maxDPI</span> <span class="o">=</span> <span class="n">dpi</span><span class="p">;</span>
<a name="line-618"></a>
<a name="line-619"></a> <span class="c1">// iterate to the next position</span>
<a name="line-620"></a>
<a name="line-621"></a> <span class="o">++</span><span class="n">it</span><span class="p">;</span>
<a name="line-622"></a> <span class="n">layout</span> <span class="o">=</span> <span class="p">(</span><span class="n">it</span> <span class="o">==</span> <span class="n">layouts</span><span class="p">.</span><span class="n">end</span><span class="p">())</span> <span class="o">?</span> <span class="k">nullptr</span> <span class="o">:</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">QRect</span><span class="o">*&gt;</span><span class="p">(</span><span class="o">*</span><span class="n">it</span><span class="p">);</span>
<a name="line-623"></a>
<a name="line-624"></a> <span class="k">if</span> <span class="p">(</span><span class="n">layout</span> <span class="o">==</span> <span class="k">nullptr</span><span class="p">)</span>
<a name="line-625"></a> <span class="p">{</span>
<a name="line-626"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-627"></a> <span class="p">}</span>
<a name="line-628"></a> <span class="p">}</span>
<a name="line-629"></a>
<a name="line-630"></a> <span class="k">return</span> <span class="n">maxDPI</span><span class="p">;</span>
<a name="line-631"></a><span class="p">}</span>
<a name="line-632"></a>
<a name="line-633"></a><span class="kt">void</span> <span class="n">AdvPrintTask</span><span class="o">::</span><span class="n">printCaption</span><span class="p">(</span><span class="n">QPainter</span><span class="o">&amp;</span> <span class="n">p</span><span class="p">,</span>
<a name="line-634"></a> <span class="n">AdvPrintPhoto</span><span class="o">*</span> <span class="k">const</span> <span class="n">photo</span><span class="p">,</span>
<a name="line-635"></a> <span class="kt">int</span> <span class="n">captionW</span><span class="p">,</span>
<a name="line-636"></a> <span class="kt">int</span> <span class="n">captionH</span><span class="p">,</span>
<a name="line-637"></a> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">caption</span><span class="p">)</span>
<a name="line-638"></a><span class="p">{</span>
<a name="line-639"></a> <span class="n">QStringList</span> <span class="n">captionByLines</span><span class="p">;</span>
<a name="line-640"></a>
<a name="line-641"></a> <span class="kt">int</span> <span class="n">captionIndex</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-642"></a>
<a name="line-643"></a> <span class="k">while</span> <span class="p">(</span><span class="n">captionIndex</span> <span class="o">&lt;</span> <span class="n">caption</span><span class="p">.</span><span class="n">length</span><span class="p">())</span>
<a name="line-644"></a> <span class="p">{</span>
<a name="line-645"></a> <span class="n">QString</span> <span class="n">newLine</span><span class="p">;</span>
<a name="line-646"></a> <span class="kt">bool</span> <span class="n">breakLine</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span> <span class="c1">// End Of Line found</span>
<a name="line-647"></a> <span class="kt">int</span> <span class="n">currIndex</span><span class="p">;</span> <span class="c1">// Caption QString current index</span>
<a name="line-648"></a>
<a name="line-649"></a> <span class="c1">// Check minimal lines dimension</span>
<a name="line-650"></a> <span class="c1">// TODO: fix length, maybe useless</span>
<a name="line-651"></a>
<a name="line-652"></a> <span class="kt">int</span> <span class="n">captionLineLocalLength</span> <span class="o">=</span> <span class="mi">40</span><span class="p">;</span>
<a name="line-653"></a>
<a name="line-654"></a> <span class="k">for</span> <span class="p">(</span><span class="n">currIndex</span> <span class="o">=</span> <span class="n">captionIndex</span> <span class="p">;</span>
<a name="line-655"></a> <span class="n">currIndex</span> <span class="o">&lt;</span> <span class="n">caption</span><span class="p">.</span><span class="n">length</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">breakLine</span> <span class="p">;</span> <span class="o">++</span><span class="n">currIndex</span><span class="p">)</span>
<a name="line-656"></a> <span class="p">{</span>
<a name="line-657"></a> <span class="k">if</span> <span class="p">((</span><span class="n">caption</span><span class="p">[</span><span class="n">currIndex</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;\n&#39;</span><span class="p">))</span> <span class="o">||</span>
<a name="line-658"></a> <span class="n">caption</span><span class="p">[</span><span class="n">currIndex</span><span class="p">].</span><span class="n">isSpace</span><span class="p">())</span>
<a name="line-659"></a> <span class="p">{</span>
<a name="line-660"></a> <span class="n">breakLine</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-661"></a> <span class="p">}</span>
<a name="line-662"></a> <span class="p">}</span>
<a name="line-663"></a>
<a name="line-664"></a> <span class="k">if</span> <span class="p">(</span><span class="n">captionLineLocalLength</span> <span class="o">&lt;=</span> <span class="p">(</span><span class="n">currIndex</span> <span class="o">-</span> <span class="n">captionIndex</span><span class="p">))</span>
<a name="line-665"></a> <span class="p">{</span>
<a name="line-666"></a> <span class="n">captionLineLocalLength</span> <span class="o">=</span> <span class="p">(</span><span class="n">currIndex</span> <span class="o">-</span> <span class="n">captionIndex</span><span class="p">);</span>
<a name="line-667"></a> <span class="p">}</span>
<a name="line-668"></a>
<a name="line-669"></a> <span class="n">breakLine</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-670"></a>
<a name="line-671"></a> <span class="k">for</span> <span class="p">(</span><span class="n">currIndex</span> <span class="o">=</span> <span class="n">captionIndex</span><span class="p">;</span>
<a name="line-672"></a> <span class="p">(</span><span class="n">currIndex</span> <span class="o">&lt;=</span> <span class="n">captionIndex</span> <span class="o">+</span> <span class="n">captionLineLocalLength</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
<a name="line-673"></a> <span class="p">(</span><span class="n">currIndex</span> <span class="o">&lt;</span> <span class="n">caption</span><span class="p">.</span><span class="n">length</span><span class="p">())</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">breakLine</span><span class="p">;</span>
<a name="line-674"></a> <span class="o">++</span><span class="n">currIndex</span><span class="p">)</span>
<a name="line-675"></a> <span class="p">{</span>
<a name="line-676"></a> <span class="n">breakLine</span> <span class="o">=</span> <span class="p">(</span><span class="n">caption</span><span class="p">[</span><span class="n">currIndex</span><span class="p">]</span> <span class="o">==</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;\n&#39;</span><span class="p">))</span> <span class="o">?</span> <span class="nb">true</span> <span class="o">:</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-677"></a>
<a name="line-678"></a> <span class="k">if</span> <span class="p">(</span><span class="n">breakLine</span><span class="p">)</span>
<a name="line-679"></a> <span class="p">{</span>
<a name="line-680"></a> <span class="n">newLine</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39; &#39;</span><span class="p">));</span>
<a name="line-681"></a> <span class="p">}</span>
<a name="line-682"></a> <span class="k">else</span>
<a name="line-683"></a> <span class="p">{</span>
<a name="line-684"></a> <span class="n">newLine</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">caption</span><span class="p">[</span><span class="n">currIndex</span><span class="p">]);</span>
<a name="line-685"></a> <span class="p">}</span>
<a name="line-686"></a> <span class="p">}</span>
<a name="line-687"></a>
<a name="line-688"></a> <span class="n">captionIndex</span> <span class="o">=</span> <span class="n">currIndex</span><span class="p">;</span> <span class="c1">// The line is ended</span>
<a name="line-689"></a>
<a name="line-690"></a> <span class="k">if</span> <span class="p">(</span><span class="n">captionIndex</span> <span class="o">!=</span> <span class="n">caption</span><span class="p">.</span><span class="n">length</span><span class="p">())</span>
<a name="line-691"></a> <span class="p">{</span>
<a name="line-692"></a> <span class="k">while</span> <span class="p">(</span><span class="o">!</span><span class="n">newLine</span><span class="p">.</span><span class="n">endsWith</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39; &#39;</span><span class="p">)))</span>
<a name="line-693"></a> <span class="p">{</span>
<a name="line-694"></a> <span class="n">newLine</span><span class="p">.</span><span class="n">truncate</span><span class="p">(</span><span class="n">newLine</span><span class="p">.</span><span class="n">length</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-695"></a> <span class="n">captionIndex</span><span class="o">--</span><span class="p">;</span>
<a name="line-696"></a> <span class="p">}</span>
<a name="line-697"></a> <span class="p">}</span>
<a name="line-698"></a>
<a name="line-699"></a> <span class="n">captionByLines</span><span class="p">.</span><span class="n">prepend</span><span class="p">(</span><span class="n">newLine</span><span class="p">.</span><span class="n">trimmed</span><span class="p">());</span>
<a name="line-700"></a> <span class="p">}</span>
<a name="line-701"></a>
<a name="line-702"></a> <span class="n">QFont</span> <span class="n">font</span><span class="p">(</span><span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_pAdvPrintCaptionInfo</span><span class="o">-&gt;</span><span class="n">m_captionFont</span><span class="p">);</span>
<a name="line-703"></a> <span class="n">font</span><span class="p">.</span><span class="n">setStyleHint</span><span class="p">(</span><span class="n">QFont</span><span class="o">::</span><span class="n">SansSerif</span><span class="p">);</span>
<a name="line-704"></a> <span class="n">font</span><span class="p">.</span><span class="n">setPixelSize</span><span class="p">((</span><span class="kt">int</span><span class="p">)(</span><span class="n">captionH</span> <span class="o">*</span> <span class="mf">0.8F</span><span class="p">));</span> <span class="c1">// Font height ratio</span>
<a name="line-705"></a> <span class="n">font</span><span class="p">.</span><span class="n">setWeight</span><span class="p">(</span><span class="n">QFont</span><span class="o">::</span><span class="n">Normal</span><span class="p">);</span>
<a name="line-706"></a>
<a name="line-707"></a> <span class="n">QFontMetrics</span> <span class="nf">fm</span><span class="p">(</span><span class="n">font</span><span class="p">);</span>
<a name="line-708"></a> <span class="kt">int</span> <span class="n">pixelsHigh</span> <span class="o">=</span> <span class="n">fm</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
<a name="line-709"></a>
<a name="line-710"></a> <span class="n">p</span><span class="p">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">);</span>
<a name="line-711"></a> <span class="n">p</span><span class="p">.</span><span class="n">setPen</span><span class="p">(</span><span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_pAdvPrintCaptionInfo</span><span class="o">-&gt;</span><span class="n">m_captionColor</span><span class="p">);</span>
<a name="line-712"></a>
<a name="line-713"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_DPLUGIN_GENERIC_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Number of lines &quot;</span>
<a name="line-714"></a> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span> <span class="n">captionByLines</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span>
<a name="line-715"></a>
<a name="line-716"></a> <span class="c1">// Now draw the caption</span>
<a name="line-717"></a> <span class="c1">// TODO allow printing captions per photo and on top, bottom and vertically</span>
<a name="line-718"></a>
<a name="line-719"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">lineNumber</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span>
<a name="line-720"></a> <span class="n">lineNumber</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span> <span class="n">captionByLines</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">lineNumber</span><span class="p">)</span>
<a name="line-721"></a> <span class="p">{</span>
<a name="line-722"></a> <span class="k">if</span> <span class="p">(</span><span class="n">lineNumber</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-723"></a> <span class="p">{</span>
<a name="line-724"></a> <span class="n">p</span><span class="p">.</span><span class="n">translate</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span> <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">pixelsHigh</span><span class="p">));</span>
<a name="line-725"></a> <span class="p">}</span>
<a name="line-726"></a>
<a name="line-727"></a> <span class="n">QRect</span> <span class="n">r</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">captionW</span><span class="p">,</span> <span class="n">captionH</span><span class="p">);</span>
<a name="line-728"></a>
<a name="line-729"></a> <span class="n">p</span><span class="p">.</span><span class="n">drawText</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AlignLeft</span><span class="p">,</span> <span class="n">captionByLines</span><span class="p">[</span><span class="n">lineNumber</span><span class="p">],</span> <span class="o">&amp;</span><span class="n">r</span><span class="p">);</span>
<a name="line-730"></a> <span class="p">}</span>
<a name="line-731"></a><span class="p">}</span>
<a name="line-732"></a>
<a name="line-733"></a><span class="p">}</span> <span class="c1">// namespace DigikamGenericPrintCreatorPlugin</span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/4.html b/static/reports/cppcheck/master/4.html
index 60d7210df..ed813f6ca 100644
--- a/static/reports/cppcheck/master/4.html
+++ b/static/reports/cppcheck/master/4.html
@@ -1,767 +1,767 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/dplugins/generic/tools/printcreator/tools/atkinspagelayouttree.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/dplugins/generic/tools/printcreator/tools/atkinspagelayouttree.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> atkinspagelayouttree.cpp</p>
<a href='4.html#line-240'> shadowVar 240</a><a href='4.html#line-259'> shadowVar 259</a>
</div>
<div id="content">
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
<a name="line-6"></a><span class="cm"> * Date : 2007-02-13</span>
<a name="line-7"></a><span class="cm"> * Description : Layouting photos on a page</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2007-2009 by Marcel Wiesweg &lt;marcel dot wiesweg at gmx dot de&gt;</span>
<a name="line-10"></a><span class="cm"> * Copyright (C) 2006-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&gt;</span>
<a name="line-11"></a><span class="cm"> *</span>
<a name="line-12"></a><span class="cm"> * This program is free software; you can redistribute it</span>
<a name="line-13"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
<a name="line-14"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
<a name="line-15"></a><span class="cm"> * either version 2, or (at your option) any later version.</span>
<a name="line-16"></a><span class="cm"> *</span>
<a name="line-17"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
<a name="line-18"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="line-19"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
<a name="line-20"></a><span class="cm"> * GNU General Public License for more details.</span>
<a name="line-21"></a><span class="cm"> *</span>
<a name="line-22"></a><span class="cm"> * ============================================================ */</span>
<a name="line-23"></a>
<a name="line-24"></a><span class="cp">#include</span> <span class="cpf">&quot;atkinspagelayouttree.h&quot;</span><span class="cp"></span>
<a name="line-25"></a>
<a name="line-26"></a><span class="c1">// C++ includes</span>
<a name="line-27"></a>
<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;cmath&gt;</span><span class="cp"></span>
<a name="line-29"></a>
<a name="line-30"></a><span class="c1">// Qt includes</span>
<a name="line-31"></a>
<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QList&gt;</span><span class="cp"></span>
<a name="line-33"></a>
<a name="line-34"></a><span class="c1">// Local includes</span>
<a name="line-35"></a>
<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&quot;atkinspagelayoutnode.h&quot;</span><span class="cp"></span>
<a name="line-37"></a>
<a name="line-38"></a><span class="k">namespace</span> <span class="n">DigikamGenericPrintCreatorPlugin</span>
<a name="line-39"></a><span class="p">{</span>
<a name="line-40"></a>
<a name="line-41"></a><span class="n">AtkinsPageLayoutTree</span><span class="o">::</span><span class="n">AtkinsPageLayoutTree</span><span class="p">(</span><span class="kt">double</span> <span class="n">aspectRatioPage</span><span class="p">,</span>
<a name="line-42"></a> <span class="kt">double</span> <span class="n">absoluteAreaPage</span><span class="p">)</span>
<a name="line-43"></a> <span class="o">:</span> <span class="n">m_root</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-44"></a> <span class="n">m_count</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
<a name="line-45"></a> <span class="n">m_aspectRatioPage</span><span class="p">(</span><span class="n">aspectRatioPage</span><span class="p">),</span>
<a name="line-46"></a> <span class="n">m_absoluteAreaPage</span><span class="p">(</span><span class="n">absoluteAreaPage</span><span class="p">)</span>
<a name="line-47"></a><span class="p">{</span>
<a name="line-48"></a><span class="p">}</span>
<a name="line-49"></a>
<a name="line-50"></a><span class="n">AtkinsPageLayoutTree</span><span class="o">::</span><span class="n">AtkinsPageLayoutTree</span><span class="p">(</span><span class="k">const</span> <span class="n">AtkinsPageLayoutTree</span><span class="o">&amp;</span> <span class="n">other</span><span class="p">)</span>
<a name="line-51"></a> <span class="o">:</span> <span class="n">m_root</span><span class="p">(</span><span class="k">nullptr</span><span class="p">)</span>
<a name="line-52"></a><span class="p">{</span>
<a name="line-53"></a> <span class="p">(</span><span class="o">*</span><span class="k">this</span><span class="p">)</span> <span class="o">=</span> <span class="n">other</span><span class="p">;</span>
<a name="line-54"></a><span class="p">}</span>
<a name="line-55"></a>
<a name="line-56"></a><span class="n">AtkinsPageLayoutTree</span><span class="o">&amp;</span> <span class="n">AtkinsPageLayoutTree</span><span class="o">::</span><span class="k">operator</span><span class="o">=</span><span class="p">(</span><span class="k">const</span> <span class="n">AtkinsPageLayoutTree</span><span class="o">&amp;</span> <span class="n">other</span><span class="p">)</span>
<a name="line-57"></a><span class="p">{</span>
<a name="line-58"></a> <span class="k">if</span> <span class="p">(</span><span class="k">this</span> <span class="o">!=</span> <span class="o">&amp;</span><span class="n">other</span><span class="p">)</span>
<a name="line-59"></a> <span class="p">{</span>
<a name="line-60"></a> <span class="k">delete</span> <span class="n">m_root</span><span class="p">;</span>
<a name="line-61"></a> <span class="n">m_root</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AtkinsPageLayoutNode</span><span class="p">(</span><span class="o">*</span><span class="p">(</span><span class="n">other</span><span class="p">.</span><span class="n">m_root</span><span class="p">));</span>
<a name="line-62"></a> <span class="n">m_count</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_count</span><span class="p">;</span>
<a name="line-63"></a> <span class="n">m_aspectRatioPage</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_aspectRatioPage</span><span class="p">;</span>
<a name="line-64"></a> <span class="n">m_absoluteAreaPage</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_absoluteAreaPage</span><span class="p">;</span>
<a name="line-65"></a> <span class="p">}</span>
<a name="line-66"></a>
<a name="line-67"></a> <span class="k">return</span> <span class="o">*</span><span class="k">this</span><span class="p">;</span>
<a name="line-68"></a><span class="p">}</span>
<a name="line-69"></a>
<a name="line-70"></a><span class="n">AtkinsPageLayoutTree</span><span class="o">::~</span><span class="n">AtkinsPageLayoutTree</span><span class="p">()</span>
<a name="line-71"></a><span class="p">{</span>
<a name="line-72"></a> <span class="k">delete</span> <span class="n">m_root</span><span class="p">;</span>
<a name="line-73"></a><span class="p">}</span>
<a name="line-74"></a>
<a name="line-75"></a><span class="kt">int</span> <span class="n">AtkinsPageLayoutTree</span><span class="o">::</span><span class="n">addImage</span><span class="p">(</span><span class="kt">double</span> <span class="n">aspectRatio</span><span class="p">,</span>
<a name="line-76"></a> <span class="kt">double</span> <span class="n">relativeArea</span><span class="p">)</span>
<a name="line-77"></a><span class="p">{</span>
<a name="line-78"></a> <span class="kt">int</span> <span class="n">index</span> <span class="o">=</span> <span class="n">m_count</span><span class="p">;</span>
<a name="line-79"></a>
<a name="line-80"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_root</span><span class="p">)</span>
<a name="line-81"></a> <span class="p">{</span>
<a name="line-82"></a> <span class="n">m_root</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AtkinsPageLayoutNode</span><span class="p">(</span><span class="n">aspectRatio</span><span class="p">,</span>
<a name="line-83"></a> <span class="n">relativeArea</span><span class="p">,</span>
<a name="line-84"></a> <span class="n">index</span><span class="p">);</span>
<a name="line-85"></a> <span class="n">m_count</span><span class="o">++</span><span class="p">;</span>
<a name="line-86"></a> <span class="k">return</span> <span class="n">index</span><span class="p">;</span>
<a name="line-87"></a> <span class="p">}</span>
<a name="line-88"></a>
<a name="line-89"></a> <span class="c1">// Section 2.1</span>
<a name="line-90"></a>
<a name="line-91"></a> <span class="n">AtkinsPageLayoutNode</span><span class="o">*</span> <span class="n">bestTree</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-92"></a> <span class="kt">double</span> <span class="n">highScore</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-93"></a>
<a name="line-94"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">m_count</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-95"></a> <span class="p">{</span>
<a name="line-96"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">horizontal</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">horizontal</span> <span class="o">&lt;</span> <span class="mi">2</span> <span class="p">;</span> <span class="o">++</span><span class="n">horizontal</span><span class="p">)</span>
<a name="line-97"></a> <span class="p">{</span>
<a name="line-98"></a> <span class="c1">// create temporary tree</span>
<a name="line-99"></a>
<a name="line-100"></a> <span class="n">AtkinsPageLayoutNode</span><span class="o">*</span> <span class="n">candidateTree</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AtkinsPageLayoutNode</span><span class="p">(</span><span class="o">*</span><span class="n">m_root</span><span class="p">);</span>
<a name="line-101"></a>
<a name="line-102"></a> <span class="c1">// select the subtree which will be replace by a new internal node</span>
<a name="line-103"></a>
<a name="line-104"></a> <span class="n">AtkinsPageLayoutNode</span><span class="o">*</span> <span class="k">const</span> <span class="n">candidateSubtree</span> <span class="o">=</span> <span class="n">candidateTree</span><span class="o">-&gt;</span><span class="n">nodeForIndex</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
<a name="line-105"></a>
<a name="line-106"></a> <span class="c1">// find parent node</span>
<a name="line-107"></a>
<a name="line-108"></a> <span class="n">AtkinsPageLayoutNode</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentNode</span> <span class="o">=</span> <span class="n">candidateTree</span><span class="o">-&gt;</span><span class="n">parentOf</span><span class="p">(</span><span class="n">candidateSubtree</span><span class="p">);</span>
<a name="line-109"></a>
<a name="line-110"></a> <span class="c1">// create new terminal node</span>
<a name="line-111"></a>
<a name="line-112"></a> <span class="n">AtkinsPageLayoutNode</span><span class="o">*</span> <span class="k">const</span> <span class="n">newTerminalNode</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AtkinsPageLayoutNode</span><span class="p">(</span><span class="n">aspectRatio</span><span class="p">,</span>
<a name="line-113"></a> <span class="n">relativeArea</span><span class="p">,</span>
<a name="line-114"></a> <span class="n">index</span><span class="p">);</span>
<a name="line-115"></a>
<a name="line-116"></a> <span class="c1">// create new internal node</span>
<a name="line-117"></a>
<a name="line-118"></a> <span class="n">AtkinsPageLayoutNode</span><span class="o">*</span> <span class="k">const</span> <span class="n">newInternalNode</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AtkinsPageLayoutNode</span><span class="p">(</span><span class="n">candidateSubtree</span><span class="p">,</span>
<a name="line-119"></a> <span class="n">newTerminalNode</span><span class="p">,</span>
<a name="line-120"></a> <span class="n">horizontal</span><span class="p">,</span>
<a name="line-121"></a> <span class="n">index</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span>
<a name="line-122"></a>
<a name="line-123"></a> <span class="c1">// replace in tree</span>
<a name="line-124"></a>
<a name="line-125"></a> <span class="k">if</span> <span class="p">(</span><span class="n">parentNode</span><span class="p">)</span>
<a name="line-126"></a> <span class="p">{</span>
<a name="line-127"></a> <span class="c1">// replace in tree</span>
<a name="line-128"></a>
<a name="line-129"></a> <span class="n">parentNode</span><span class="o">-&gt;</span><span class="n">takeAndSetChild</span><span class="p">(</span><span class="n">candidateSubtree</span><span class="p">,</span> <span class="n">newInternalNode</span><span class="p">);</span>
<a name="line-130"></a> <span class="p">}</span>
<a name="line-131"></a> <span class="k">else</span>
<a name="line-132"></a> <span class="p">{</span>
<a name="line-133"></a> <span class="c1">// candidateTree is candidateSubtree is root</span>
<a name="line-134"></a>
<a name="line-135"></a> <span class="n">candidateTree</span> <span class="o">=</span> <span class="n">newInternalNode</span><span class="p">;</span>
<a name="line-136"></a> <span class="p">}</span>
<a name="line-137"></a>
<a name="line-138"></a> <span class="c1">// recompute sizes</span>
<a name="line-139"></a>
<a name="line-140"></a> <span class="n">candidateTree</span><span class="o">-&gt;</span><span class="n">computeRelativeSizes</span><span class="p">();</span>
<a name="line-141"></a>
<a name="line-142"></a> <span class="kt">double</span> <span class="n">candidateScore</span> <span class="o">=</span> <span class="n">score</span><span class="p">(</span><span class="n">candidateTree</span><span class="p">,</span> <span class="n">m_count</span><span class="o">+</span><span class="mi">2</span><span class="p">);</span>
<a name="line-143"></a>
<a name="line-144"></a> <span class="k">if</span> <span class="p">(</span><span class="n">candidateScore</span> <span class="o">&gt;</span> <span class="n">highScore</span><span class="p">)</span>
<a name="line-145"></a> <span class="p">{</span>
<a name="line-146"></a> <span class="n">highScore</span> <span class="o">=</span> <span class="n">candidateScore</span><span class="p">;</span>
<a name="line-147"></a> <span class="k">delete</span> <span class="n">bestTree</span><span class="p">;</span>
<a name="line-148"></a> <span class="n">bestTree</span> <span class="o">=</span> <span class="n">candidateTree</span><span class="p">;</span>
<a name="line-149"></a> <span class="p">}</span>
<a name="line-150"></a> <span class="k">else</span>
<a name="line-151"></a> <span class="p">{</span>
<a name="line-152"></a> <span class="k">delete</span> <span class="n">candidateTree</span><span class="p">;</span>
<a name="line-153"></a> <span class="p">}</span>
<a name="line-154"></a> <span class="p">}</span>
<a name="line-155"></a> <span class="p">}</span>
<a name="line-156"></a>
<a name="line-157"></a> <span class="k">delete</span> <span class="n">m_root</span><span class="p">;</span>
<a name="line-158"></a> <span class="n">m_root</span> <span class="o">=</span> <span class="n">bestTree</span><span class="p">;</span>
<a name="line-159"></a>
<a name="line-160"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_root</span><span class="p">)</span>
<a name="line-161"></a> <span class="p">{</span>
<a name="line-162"></a> <span class="n">m_root</span><span class="o">-&gt;</span><span class="n">computeDivisions</span><span class="p">();</span>
<a name="line-163"></a> <span class="p">}</span>
<a name="line-164"></a>
<a name="line-165"></a> <span class="n">m_count</span> <span class="o">+=</span> <span class="mi">2</span><span class="p">;</span>
<a name="line-166"></a>
<a name="line-167"></a> <span class="k">return</span> <span class="n">index</span><span class="p">;</span>
<a name="line-168"></a><span class="p">}</span>
<a name="line-169"></a>
<a name="line-170"></a><span class="c1">/// Section 2.2.1</span>
<a name="line-171"></a><span class="kt">double</span> <span class="n">AtkinsPageLayoutTree</span><span class="o">::</span><span class="n">score</span><span class="p">(</span><span class="n">AtkinsPageLayoutNode</span><span class="o">*</span> <span class="k">const</span> <span class="n">root</span><span class="p">,</span>
<a name="line-172"></a> <span class="kt">int</span> <span class="n">nodeCount</span><span class="p">)</span>
<a name="line-173"></a><span class="p">{</span>
<a name="line-174"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">root</span><span class="p">)</span>
<a name="line-175"></a> <span class="p">{</span>
<a name="line-176"></a> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-177"></a> <span class="p">}</span>
<a name="line-178"></a>
<a name="line-179"></a> <span class="kt">double</span> <span class="n">areaSum</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-180"></a>
<a name="line-181"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">nodeCount</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-182"></a> <span class="p">{</span>
<a name="line-183"></a> <span class="n">AtkinsPageLayoutNode</span><span class="o">*</span> <span class="k">const</span> <span class="n">node</span> <span class="o">=</span> <span class="n">root</span><span class="o">-&gt;</span><span class="n">nodeForIndex</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
<a name="line-184"></a>
<a name="line-185"></a> <span class="k">if</span> <span class="p">(</span><span class="n">node</span><span class="o">-&gt;</span><span class="n">type</span><span class="p">()</span> <span class="o">==</span> <span class="n">AtkinsPageLayoutNode</span><span class="o">::</span><span class="n">TerminalNode</span><span class="p">)</span>
<a name="line-186"></a> <span class="p">{</span>
<a name="line-187"></a> <span class="n">areaSum</span> <span class="o">+=</span> <span class="n">node</span><span class="o">-&gt;</span><span class="n">relativeArea</span><span class="p">();</span>
<a name="line-188"></a> <span class="p">}</span>
<a name="line-189"></a> <span class="p">}</span>
<a name="line-190"></a>
<a name="line-191"></a> <span class="kt">double</span> <span class="n">minRatioPage</span> <span class="o">=</span> <span class="n">root</span><span class="o">-&gt;</span><span class="n">aspectRatio</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">m_aspectRatioPage</span> <span class="o">?</span> <span class="n">root</span><span class="o">-&gt;</span><span class="n">aspectRatio</span><span class="p">()</span>
<a name="line-192"></a> <span class="o">:</span> <span class="n">m_aspectRatioPage</span><span class="p">;</span>
<a name="line-193"></a> <span class="kt">double</span> <span class="n">maxRatioPage</span> <span class="o">=</span> <span class="n">root</span><span class="o">-&gt;</span><span class="n">aspectRatio</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">m_aspectRatioPage</span> <span class="o">?</span> <span class="n">root</span><span class="o">-&gt;</span><span class="n">aspectRatio</span><span class="p">()</span>
<a name="line-194"></a> <span class="o">:</span> <span class="n">m_aspectRatioPage</span><span class="p">;</span>
<a name="line-195"></a>
<a name="line-196"></a> <span class="k">return</span> <span class="nf">G</span><span class="p">()</span> <span class="o">*</span> <span class="p">(</span><span class="n">areaSum</span> <span class="o">/</span> <span class="n">root</span><span class="o">-&gt;</span><span class="n">relativeArea</span><span class="p">())</span> <span class="o">*</span> <span class="p">(</span><span class="n">minRatioPage</span> <span class="o">/</span> <span class="n">maxRatioPage</span><span class="p">);</span>
<a name="line-197"></a><span class="p">}</span>
<a name="line-198"></a>
<a name="line-199"></a><span class="c1">/// Section 2.2.2</span>
<a name="line-200"></a><span class="kt">double</span> <span class="n">AtkinsPageLayoutTree</span><span class="o">::</span><span class="n">G</span><span class="p">()</span> <span class="k">const</span>
<a name="line-201"></a><span class="p">{</span>
<a name="line-202"></a> <span class="k">return</span> <span class="mf">0.95</span> <span class="o">*</span> <span class="mf">0.95</span><span class="p">;</span>
<a name="line-203"></a><span class="p">}</span>
<a name="line-204"></a>
<a name="line-205"></a><span class="c1">/// Section 2.2.2</span>
<a name="line-206"></a><span class="kt">double</span> <span class="n">AtkinsPageLayoutTree</span><span class="o">::</span><span class="n">absoluteArea</span><span class="p">(</span><span class="n">AtkinsPageLayoutNode</span><span class="o">*</span> <span class="k">const</span> <span class="n">node</span><span class="p">)</span>
<a name="line-207"></a><span class="p">{</span>
<a name="line-208"></a> <span class="c1">// min(a_pbb, a_page), max(a_pbb, a_page)</span>
<a name="line-209"></a>
<a name="line-210"></a> <span class="kt">double</span> <span class="n">minRatioPage</span> <span class="o">=</span> <span class="n">m_root</span><span class="o">-&gt;</span><span class="n">aspectRatio</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">m_aspectRatioPage</span> <span class="o">?</span> <span class="n">m_root</span><span class="o">-&gt;</span><span class="n">aspectRatio</span><span class="p">()</span>
<a name="line-211"></a> <span class="o">:</span> <span class="n">m_aspectRatioPage</span><span class="p">;</span>
<a name="line-212"></a> <span class="kt">double</span> <span class="n">maxRatioPage</span> <span class="o">=</span> <span class="n">m_root</span><span class="o">-&gt;</span><span class="n">aspectRatio</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">m_aspectRatioPage</span> <span class="o">?</span> <span class="n">m_root</span><span class="o">-&gt;</span><span class="n">aspectRatio</span><span class="p">()</span>
<a name="line-213"></a> <span class="o">:</span> <span class="n">m_aspectRatioPage</span><span class="p">;</span>
<a name="line-214"></a>
<a name="line-215"></a> <span class="c1">// A_pbb</span>
<a name="line-216"></a>
<a name="line-217"></a> <span class="kt">double</span> <span class="n">absoluteAreaRoot</span> <span class="o">=</span> <span class="n">m_absoluteAreaPage</span> <span class="o">*</span> <span class="n">minRatioPage</span> <span class="o">/</span> <span class="n">maxRatioPage</span><span class="p">;</span>
<a name="line-218"></a>
<a name="line-219"></a> <span class="k">if</span> <span class="p">(</span><span class="n">node</span> <span class="o">==</span> <span class="n">m_root</span><span class="p">)</span>
<a name="line-220"></a> <span class="p">{</span>
<a name="line-221"></a> <span class="k">return</span> <span class="n">absoluteAreaRoot</span><span class="p">;</span>
<a name="line-222"></a> <span class="p">}</span>
<a name="line-223"></a>
<a name="line-224"></a> <span class="c1">// A_i</span>
<a name="line-225"></a> <span class="k">return</span> <span class="p">(</span><span class="n">G</span><span class="p">()</span> <span class="o">*</span> <span class="n">node</span><span class="o">-&gt;</span><span class="n">relativeArea</span><span class="p">()</span> <span class="o">/</span> <span class="n">m_root</span><span class="o">-&gt;</span><span class="n">relativeArea</span><span class="p">()</span> <span class="o">*</span> <span class="n">absoluteAreaRoot</span><span class="p">);</span>
<a name="line-226"></a><span class="p">}</span>
<a name="line-227"></a>
<a name="line-228"></a><span class="n">QRectF</span> <span class="n">AtkinsPageLayoutTree</span><span class="o">::</span><span class="n">drawingArea</span><span class="p">(</span><span class="kt">int</span> <span class="n">index</span><span class="p">,</span> <span class="k">const</span> <span class="n">QRectF</span><span class="o">&amp;</span> <span class="n">absoluteRectPage</span><span class="p">)</span>
<a name="line-229"></a><span class="p">{</span>
<a name="line-230"></a> <span class="n">AtkinsPageLayoutNode</span><span class="o">*</span> <span class="k">const</span> <span class="n">node</span> <span class="o">=</span> <span class="n">m_root</span><span class="o">-&gt;</span><span class="n">nodeForIndex</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
<a name="line-231"></a>
<a name="line-232"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">node</span><span class="p">)</span>
<a name="line-233"></a> <span class="p">{</span>
<a name="line-234"></a> <span class="k">return</span> <span class="n">QRectF</span><span class="p">();</span>
<a name="line-235"></a> <span class="p">}</span>
<a name="line-236"></a>
<a name="line-237"></a> <span class="c1">// find out the &quot;line of ancestry&quot; of the node</span>
<a name="line-238"></a>
<a name="line-239"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">AtkinsPageLayoutNode</span><span class="o">*&gt;</span> <span class="n">treePath</span><span class="p">;</span>
<a name="line-240"></a><span class="hll"> <span class="n">AtkinsPageLayoutNode</span><span class="o">*</span> <span class="n">parent</span> <span class="o">=</span> <span class="n">node</span><span class="p">;</span><span class='error2'>&lt;--- Shadowed declaration</span>
</span><a name="line-241"></a>
<a name="line-242"></a> <span class="k">while</span> <span class="p">(</span><span class="n">parent</span><span class="p">)</span>
<a name="line-243"></a> <span class="p">{</span>
<a name="line-244"></a> <span class="n">treePath</span><span class="p">.</span><span class="n">prepend</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
<a name="line-245"></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">m_root</span><span class="o">-&gt;</span><span class="n">parentOf</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
<a name="line-246"></a> <span class="p">}</span>
<a name="line-247"></a>
<a name="line-248"></a> <span class="c1">// find out the rect of the page bounding box (the rect of the root node in the page rect)</span>
<a name="line-249"></a>
<a name="line-250"></a> <span class="n">QRectF</span> <span class="n">absoluteRect</span> <span class="o">=</span> <span class="n">rectInRect</span><span class="p">(</span><span class="n">absoluteRectPage</span><span class="p">,</span>
<a name="line-251"></a> <span class="n">m_root</span><span class="o">-&gt;</span><span class="n">aspectRatio</span><span class="p">(),</span>
<a name="line-252"></a> <span class="n">absoluteArea</span><span class="p">(</span><span class="n">m_root</span><span class="p">));</span>
<a name="line-253"></a>
<a name="line-254"></a> <span class="c1">// go along the line of ancestry and narrow down the bounding rectangle,</span>
<a name="line-255"></a> <span class="c1">// as described in section 2.2.2</span>
<a name="line-256"></a>
<a name="line-257"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">treePath</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-258"></a> <span class="p">{</span>
<a name="line-259"></a><span class="hll"> <span class="n">AtkinsPageLayoutNode</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span> <span class="o">=</span> <span class="n">treePath</span><span class="p">[</span><span class="n">i</span><span class="p">];</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-260"></a> <span class="n">AtkinsPageLayoutNode</span><span class="o">*</span> <span class="k">const</span> <span class="n">child</span> <span class="o">=</span> <span class="n">treePath</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">];</span> <span class="c1">// only iterating to count-1</span>
<a name="line-261"></a>
<a name="line-262"></a> <span class="k">if</span> <span class="p">(</span><span class="n">parent</span><span class="o">-&gt;</span><span class="n">type</span><span class="p">()</span> <span class="o">==</span> <span class="n">AtkinsPageLayoutNode</span><span class="o">::</span><span class="n">VerticalDivision</span><span class="p">)</span> <span class="c1">// side by side</span>
<a name="line-263"></a> <span class="p">{</span>
<a name="line-264"></a> <span class="kt">double</span> <span class="n">leftWidth</span> <span class="o">=</span> <span class="n">absoluteRect</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">*</span> <span class="n">parent</span><span class="o">-&gt;</span><span class="n">division</span><span class="p">();</span>
<a name="line-265"></a>
<a name="line-266"></a> <span class="k">if</span> <span class="p">(</span><span class="n">child</span> <span class="o">==</span> <span class="n">parent</span><span class="o">-&gt;</span><span class="n">leftChild</span><span class="p">())</span>
<a name="line-267"></a> <span class="p">{</span>
<a name="line-268"></a> <span class="n">absoluteRect</span><span class="p">.</span><span class="n">setWidth</span><span class="p">(</span><span class="n">leftWidth</span><span class="p">);</span>
<a name="line-269"></a> <span class="p">}</span>
<a name="line-270"></a> <span class="k">else</span> <span class="c1">// right child</span>
<a name="line-271"></a> <span class="p">{</span>
<a name="line-272"></a> <span class="kt">double</span> <span class="n">rightWidth</span> <span class="o">=</span> <span class="n">absoluteRect</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">-</span> <span class="n">leftWidth</span><span class="p">;</span>
<a name="line-273"></a> <span class="n">absoluteRect</span><span class="p">.</span><span class="n">setWidth</span><span class="p">(</span><span class="n">rightWidth</span><span class="p">);</span>
<a name="line-274"></a> <span class="n">absoluteRect</span><span class="p">.</span><span class="n">translate</span><span class="p">(</span><span class="n">leftWidth</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-275"></a> <span class="p">}</span>
<a name="line-276"></a> <span class="p">}</span>
<a name="line-277"></a> <span class="k">else</span> <span class="c1">// horizontal division: one on top of the other</span>
<a name="line-278"></a> <span class="p">{</span>
<a name="line-279"></a> <span class="c1">// left child is topmost</span>
<a name="line-280"></a>
<a name="line-281"></a> <span class="kt">double</span> <span class="n">upperHeight</span> <span class="o">=</span> <span class="n">absoluteRect</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">*</span> <span class="n">parent</span><span class="o">-&gt;</span><span class="n">division</span><span class="p">();</span>
<a name="line-282"></a>
<a name="line-283"></a> <span class="k">if</span> <span class="p">(</span><span class="n">child</span> <span class="o">==</span> <span class="n">parent</span><span class="o">-&gt;</span><span class="n">leftChild</span><span class="p">())</span>
<a name="line-284"></a> <span class="p">{</span>
<a name="line-285"></a> <span class="n">absoluteRect</span><span class="p">.</span><span class="n">setHeight</span><span class="p">(</span><span class="n">upperHeight</span><span class="p">);</span>
<a name="line-286"></a> <span class="p">}</span>
<a name="line-287"></a> <span class="k">else</span> <span class="c1">// right child</span>
<a name="line-288"></a> <span class="p">{</span>
<a name="line-289"></a> <span class="kt">double</span> <span class="n">lowerHeight</span> <span class="o">=</span> <span class="n">absoluteRect</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">-</span> <span class="n">upperHeight</span><span class="p">;</span>
<a name="line-290"></a> <span class="n">absoluteRect</span><span class="p">.</span><span class="n">setHeight</span><span class="p">(</span><span class="n">lowerHeight</span><span class="p">);</span>
<a name="line-291"></a> <span class="n">absoluteRect</span><span class="p">.</span><span class="n">translate</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">upperHeight</span><span class="p">);</span>
<a name="line-292"></a> <span class="p">}</span>
<a name="line-293"></a> <span class="p">}</span>
<a name="line-294"></a> <span class="p">}</span>
<a name="line-295"></a>
<a name="line-296"></a> <span class="k">return</span> <span class="n">rectInRect</span><span class="p">(</span><span class="n">absoluteRect</span><span class="p">,</span> <span class="n">node</span><span class="o">-&gt;</span><span class="n">aspectRatio</span><span class="p">(),</span> <span class="n">absoluteArea</span><span class="p">(</span><span class="n">node</span><span class="p">));</span>
<a name="line-297"></a><span class="p">}</span>
<a name="line-298"></a>
<a name="line-299"></a><span class="n">QRectF</span> <span class="n">AtkinsPageLayoutTree</span><span class="o">::</span><span class="n">rectInRect</span><span class="p">(</span><span class="k">const</span> <span class="n">QRectF</span> <span class="o">&amp;</span><span class="n">rect</span><span class="p">,</span>
<a name="line-300"></a> <span class="kt">double</span> <span class="n">aspectRatio</span><span class="p">,</span>
<a name="line-301"></a> <span class="kt">double</span> <span class="n">absoluteArea</span><span class="p">)</span>
<a name="line-302"></a><span class="p">{</span>
<a name="line-303"></a> <span class="kt">double</span> <span class="n">width</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">sqrt</span><span class="p">(</span><span class="n">absoluteArea</span> <span class="o">/</span> <span class="n">aspectRatio</span><span class="p">);</span>
<a name="line-304"></a> <span class="kt">double</span> <span class="n">height</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">sqrt</span><span class="p">(</span><span class="n">absoluteArea</span> <span class="o">*</span> <span class="n">aspectRatio</span><span class="p">);</span>
<a name="line-305"></a> <span class="kt">double</span> <span class="n">x</span> <span class="o">=</span> <span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">+</span> <span class="p">(</span><span class="n">rect</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">-</span> <span class="n">width</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">;</span>
<a name="line-306"></a> <span class="kt">double</span> <span class="n">y</span> <span class="o">=</span> <span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">+</span> <span class="p">(</span><span class="n">rect</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">-</span> <span class="n">height</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">;</span>
<a name="line-307"></a>
<a name="line-308"></a> <span class="k">return</span> <span class="nf">QRectF</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">);</span>
<a name="line-309"></a><span class="p">}</span>
<a name="line-310"></a>
<a name="line-311"></a><span class="p">}</span> <span class="c1">// Namespace Digikam</span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/5.html b/static/reports/cppcheck/master/5.html
index 80ab46e40..56ba0f620 100644
--- a/static/reports/cppcheck/master/5.html
+++ b/static/reports/cppcheck/master/5.html
@@ -1,971 +1,971 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/dplugins/generic/tools/printcreator/wizard/advprintwizard.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/dplugins/generic/tools/printcreator/wizard/advprintwizard.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> advprintwizard.cpp</p>
<a href='5.html#line-280'> shadowVar 280</a><a href='5.html#line-329'> shadowVar 329</a>
</div>
<div id="content">
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
<a name="line-6"></a><span class="cm"> * Date : 2008-01-11</span>
<a name="line-7"></a><span class="cm"> * Description : a tool to print images</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2008-2012 by Angelo Naselli &lt;anaselli at linux dot it&gt;</span>
<a name="line-10"></a><span class="cm"> * Copyright (C) 2006-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&gt;</span>
<a name="line-11"></a><span class="cm"> *</span>
<a name="line-12"></a><span class="cm"> * This program is free software; you can redistribute it</span>
<a name="line-13"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
<a name="line-14"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
<a name="line-15"></a><span class="cm"> * either version 2, or (at your option) any later version.</span>
<a name="line-16"></a><span class="cm"> *</span>
<a name="line-17"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
<a name="line-18"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="line-19"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
<a name="line-20"></a><span class="cm"> * GNU General Public License for more details.</span>
<a name="line-21"></a><span class="cm"> *</span>
<a name="line-22"></a><span class="cm"> * ============================================================ */</span>
<a name="line-23"></a>
<a name="line-24"></a><span class="cp">#include</span> <span class="cpf">&quot;advprintwizard.h&quot;</span><span class="cp"></span>
<a name="line-25"></a>
<a name="line-26"></a><span class="c1">// C++ includes</span>
<a name="line-27"></a>
<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;memory&gt;</span><span class="cp"></span>
<a name="line-29"></a>
<a name="line-30"></a><span class="c1">// Qt includes</span>
<a name="line-31"></a>
<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QFileInfo&gt;</span><span class="cp"></span>
<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QPalette&gt;</span><span class="cp"></span>
<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QtGlobal&gt;</span><span class="cp"></span>
<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QDomDocument&gt;</span><span class="cp"></span>
<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QContextMenuEvent&gt;</span><span class="cp"></span>
<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&lt;QStringRef&gt;</span><span class="cp"></span>
<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&lt;QStandardPaths&gt;</span><span class="cp"></span>
<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&lt;QMenu&gt;</span><span class="cp"></span>
<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&lt;QIcon&gt;</span><span class="cp"></span>
<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&lt;QLocale&gt;</span><span class="cp"></span>
<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&lt;QTemporaryDir&gt;</span><span class="cp"></span>
<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&lt;QKeyEvent&gt;</span><span class="cp"></span>
<a name="line-44"></a>
<a name="line-45"></a><span class="c1">// KDE includes</span>
<a name="line-46"></a>
<a name="line-47"></a><span class="cp">#include</span> <span class="cpf">&lt;kconfig.h&gt;</span><span class="cp"></span>
<a name="line-48"></a><span class="cp">#include</span> <span class="cpf">&lt;kconfiggroup.h&gt;</span><span class="cp"></span>
<a name="line-49"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
<a name="line-50"></a>
<a name="line-51"></a><span class="c1">// Local includes</span>
<a name="line-52"></a>
<a name="line-53"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_globals.h&quot;</span><span class="cp"></span>
<a name="line-54"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
<a name="line-55"></a><span class="cp">#include</span> <span class="cpf">&quot;advprintthread.h&quot;</span><span class="cp"></span>
<a name="line-56"></a><span class="cp">#include</span> <span class="cpf">&quot;advprintintropage.h&quot;</span><span class="cp"></span>
<a name="line-57"></a><span class="cp">#include</span> <span class="cpf">&quot;advprintalbumspage.h&quot;</span><span class="cp"></span>
<a name="line-58"></a><span class="cp">#include</span> <span class="cpf">&quot;advprintphotopage.h&quot;</span><span class="cp"></span>
<a name="line-59"></a><span class="cp">#include</span> <span class="cpf">&quot;advprintcaptionpage.h&quot;</span><span class="cp"></span>
<a name="line-60"></a><span class="cp">#include</span> <span class="cpf">&quot;advprintcroppage.h&quot;</span><span class="cp"></span>
<a name="line-61"></a><span class="cp">#include</span> <span class="cpf">&quot;advprintoutputpage.h&quot;</span><span class="cp"></span>
<a name="line-62"></a><span class="cp">#include</span> <span class="cpf">&quot;advprintfinalpage.h&quot;</span><span class="cp"></span>
<a name="line-63"></a><span class="cp">#include</span> <span class="cpf">&quot;templateicon.h&quot;</span><span class="cp"></span>
<a name="line-64"></a><span class="cp">#include</span> <span class="cpf">&quot;dwizardpage.h&quot;</span><span class="cp"></span>
<a name="line-65"></a><span class="cp">#include</span> <span class="cpf">&quot;dinfointerface.h&quot;</span><span class="cp"></span>
<a name="line-66"></a><span class="cp">#include</span> <span class="cpf">&quot;dfiledialog.h&quot;</span><span class="cp"></span>
<a name="line-67"></a><span class="cp">#include</span> <span class="cpf">&quot;dmetadata.h&quot;</span><span class="cp"></span>
<a name="line-68"></a>
<a name="line-69"></a><span class="k">namespace</span> <span class="n">DigikamGenericPrintCreatorPlugin</span>
<a name="line-70"></a><span class="p">{</span>
<a name="line-71"></a>
<a name="line-72"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">Private</span>
<a name="line-73"></a><span class="p">{</span>
<a name="line-74"></a><span class="k">public</span><span class="o">:</span>
<a name="line-75"></a>
<a name="line-76"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
<a name="line-77"></a> <span class="o">:</span> <span class="n">introPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-78"></a> <span class="n">albumsPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-79"></a> <span class="n">photoPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-80"></a> <span class="n">captionPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-81"></a> <span class="n">cropPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-82"></a> <span class="n">outputPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-83"></a> <span class="n">finalPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-84"></a> <span class="n">settings</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-85"></a> <span class="n">previewThread</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-86"></a> <span class="n">iface</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-87"></a> <span class="n">tempPath</span><span class="p">(</span><span class="k">nullptr</span><span class="p">)</span>
<a name="line-88"></a> <span class="p">{</span>
<a name="line-89"></a> <span class="p">}</span>
<a name="line-90"></a>
<a name="line-91"></a> <span class="n">AdvPrintIntroPage</span><span class="o">*</span> <span class="n">introPage</span><span class="p">;</span>
<a name="line-92"></a> <span class="n">AdvPrintAlbumsPage</span><span class="o">*</span> <span class="n">albumsPage</span><span class="p">;</span>
<a name="line-93"></a> <span class="n">AdvPrintPhotoPage</span><span class="o">*</span> <span class="n">photoPage</span><span class="p">;</span>
<a name="line-94"></a> <span class="n">AdvPrintCaptionPage</span><span class="o">*</span> <span class="n">captionPage</span><span class="p">;</span>
<a name="line-95"></a> <span class="n">AdvPrintCropPage</span><span class="o">*</span> <span class="n">cropPage</span><span class="p">;</span>
<a name="line-96"></a> <span class="n">AdvPrintOutputPage</span><span class="o">*</span> <span class="n">outputPage</span><span class="p">;</span>
<a name="line-97"></a> <span class="n">AdvPrintFinalPage</span><span class="o">*</span> <span class="n">finalPage</span><span class="p">;</span>
<a name="line-98"></a> <span class="n">AdvPrintSettings</span><span class="o">*</span> <span class="n">settings</span><span class="p">;</span>
<a name="line-99"></a> <span class="n">AdvPrintThread</span><span class="o">*</span> <span class="n">previewThread</span><span class="p">;</span>
<a name="line-100"></a> <span class="n">DInfoInterface</span><span class="o">*</span> <span class="n">iface</span><span class="p">;</span>
<a name="line-101"></a>
<a name="line-102"></a> <span class="n">QTemporaryDir</span><span class="o">*</span> <span class="n">tempPath</span><span class="p">;</span>
<a name="line-103"></a><span class="p">};</span>
<a name="line-104"></a>
<a name="line-105"></a><span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">AdvPrintWizard</span><span class="p">(</span><span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span><span class="p">,</span> <span class="n">DInfoInterface</span><span class="o">*</span> <span class="k">const</span> <span class="n">iface</span><span class="p">)</span>
<a name="line-106"></a> <span class="o">:</span> <span class="n">DWizardDlg</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;PrintCreatorDialog&quot;</span><span class="p">)),</span>
<a name="line-107"></a> <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">Private</span><span class="p">)</span>
<a name="line-108"></a><span class="p">{</span>
<a name="line-109"></a> <span class="n">setWindowTitle</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Print Creator&quot;</span><span class="p">));</span>
<a name="line-110"></a>
<a name="line-111"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span> <span class="o">=</span> <span class="n">iface</span><span class="p">;</span>
<a name="line-112"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AdvPrintSettings</span><span class="p">;</span>
<a name="line-113"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">previewThread</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AdvPrintThread</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-114"></a>
<a name="line-115"></a> <span class="n">KConfig</span> <span class="n">config</span><span class="p">;</span>
<a name="line-116"></a> <span class="n">KConfigGroup</span> <span class="n">group</span> <span class="o">=</span> <span class="n">config</span><span class="p">.</span><span class="n">group</span><span class="p">(</span><span class="s">&quot;PrintCreator&quot;</span><span class="p">);</span>
<a name="line-117"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">readSettings</span><span class="p">(</span><span class="n">group</span><span class="p">);</span>
<a name="line-118"></a>
<a name="line-119"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">introPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AdvPrintIntroPage</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Welcome to Print Creator&quot;</span><span class="p">));</span>
<a name="line-120"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albumsPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AdvPrintAlbumsPage</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Albums Selection&quot;</span><span class="p">));</span>
<a name="line-121"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photoPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AdvPrintPhotoPage</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Select Page Layout&quot;</span><span class="p">));</span>
<a name="line-122"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">captionPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AdvPrintCaptionPage</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Caption Settings&quot;</span><span class="p">));</span>
<a name="line-123"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cropPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AdvPrintCropPage</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Crop and Rotate Photos&quot;</span><span class="p">));</span>
<a name="line-124"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">outputPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AdvPrintOutputPage</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Images Output Settings&quot;</span><span class="p">));</span>
<a name="line-125"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">finalPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AdvPrintFinalPage</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Render Printing&quot;</span><span class="p">));</span>
<a name="line-126"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">finalPage</span><span class="o">-&gt;</span><span class="n">setPhotoPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">photoPage</span><span class="p">);</span>
<a name="line-127"></a>
<a name="line-128"></a> <span class="c1">// -----------------------------------</span>
<a name="line-129"></a>
<a name="line-130"></a> <span class="n">connect</span><span class="p">(</span><span class="n">button</span><span class="p">(</span><span class="n">QWizard</span><span class="o">::</span><span class="n">CancelButton</span><span class="p">),</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">clicked</span><span class="p">()),</span>
<a name="line-131"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">reject</span><span class="p">()));</span>
<a name="line-132"></a>
<a name="line-133"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">photoPage</span><span class="o">-&gt;</span><span class="n">imagesList</span><span class="p">(),</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalImageListChanged</span><span class="p">()),</span>
<a name="line-134"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">captionPage</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotUpdateImagesList</span><span class="p">()));</span>
<a name="line-135"></a>
<a name="line-136"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">previewThread</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalPreview</span><span class="p">(</span><span class="n">QImage</span><span class="p">)),</span>
<a name="line-137"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotPreview</span><span class="p">(</span><span class="n">QImage</span><span class="p">)));</span>
<a name="line-138"></a>
<a name="line-139"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tempPath</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QTemporaryDir</span><span class="p">();</span>
<a name="line-140"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">tempPath</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tempPath</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">();</span>
<a name="line-141"></a>
<a name="line-142"></a> <span class="n">installEventFilter</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-143"></a><span class="p">}</span>
<a name="line-144"></a>
<a name="line-145"></a><span class="n">AdvPrintWizard</span><span class="o">::~</span><span class="n">AdvPrintWizard</span><span class="p">()</span>
<a name="line-146"></a><span class="p">{</span>
<a name="line-147"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">previewThread</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">();</span>
<a name="line-148"></a>
<a name="line-149"></a> <span class="n">KConfig</span> <span class="n">config</span><span class="p">;</span>
<a name="line-150"></a> <span class="n">KConfigGroup</span> <span class="n">group</span> <span class="o">=</span> <span class="n">config</span><span class="p">.</span><span class="n">group</span><span class="p">(</span><span class="s">&quot;PrintCreator&quot;</span><span class="p">);</span>
<a name="line-151"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">writeSettings</span><span class="p">(</span><span class="n">group</span><span class="p">);</span>
<a name="line-152"></a>
<a name="line-153"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="p">;</span>
<a name="line-154"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tempPath</span><span class="p">;</span>
<a name="line-155"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
<a name="line-156"></a><span class="p">}</span>
<a name="line-157"></a>
<a name="line-158"></a><span class="n">DInfoInterface</span><span class="o">*</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">iface</span><span class="p">()</span> <span class="k">const</span>
<a name="line-159"></a><span class="p">{</span>
<a name="line-160"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span><span class="p">;</span>
<a name="line-161"></a><span class="p">}</span>
<a name="line-162"></a>
<a name="line-163"></a><span class="n">AdvPrintSettings</span><span class="o">*</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">settings</span><span class="p">()</span> <span class="k">const</span>
<a name="line-164"></a><span class="p">{</span>
<a name="line-165"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="p">;</span>
<a name="line-166"></a><span class="p">}</span>
<a name="line-167"></a>
<a name="line-168"></a><span class="kt">int</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">nextId</span><span class="p">()</span> <span class="k">const</span>
<a name="line-169"></a><span class="p">{</span>
<a name="line-170"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">selMode</span> <span class="o">==</span> <span class="n">AdvPrintSettings</span><span class="o">::</span><span class="n">ALBUMS</span><span class="p">)</span>
<a name="line-171"></a> <span class="p">{</span>
<a name="line-172"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentPage</span><span class="p">()</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">introPage</span><span class="p">)</span>
<a name="line-173"></a> <span class="p">{</span>
<a name="line-174"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albumsPage</span><span class="o">-&gt;</span><span class="n">id</span><span class="p">();</span>
<a name="line-175"></a> <span class="p">}</span>
<a name="line-176"></a> <span class="p">}</span>
<a name="line-177"></a> <span class="k">else</span>
<a name="line-178"></a> <span class="p">{</span>
<a name="line-179"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentPage</span><span class="p">()</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">introPage</span><span class="p">)</span>
<a name="line-180"></a> <span class="p">{</span>
<a name="line-181"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photoPage</span><span class="o">-&gt;</span><span class="n">id</span><span class="p">();</span>
<a name="line-182"></a> <span class="p">}</span>
<a name="line-183"></a> <span class="p">}</span>
<a name="line-184"></a>
<a name="line-185"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">printerName</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">outputName</span><span class="p">(</span><span class="n">AdvPrintSettings</span><span class="o">::</span><span class="n">FILES</span><span class="p">))</span>
<a name="line-186"></a> <span class="p">{</span>
<a name="line-187"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentPage</span><span class="p">()</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cropPage</span><span class="p">)</span>
<a name="line-188"></a> <span class="p">{</span>
<a name="line-189"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">outputPage</span><span class="o">-&gt;</span><span class="n">id</span><span class="p">();</span>
<a name="line-190"></a> <span class="p">}</span>
<a name="line-191"></a> <span class="p">}</span>
<a name="line-192"></a> <span class="k">else</span>
<a name="line-193"></a> <span class="p">{</span>
<a name="line-194"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentPage</span><span class="p">()</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cropPage</span><span class="p">)</span>
<a name="line-195"></a> <span class="p">{</span>
<a name="line-196"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">finalPage</span><span class="o">-&gt;</span><span class="n">id</span><span class="p">();</span>
<a name="line-197"></a> <span class="p">}</span>
<a name="line-198"></a> <span class="p">}</span>
<a name="line-199"></a>
<a name="line-200"></a> <span class="k">return</span> <span class="n">DWizardDlg</span><span class="o">::</span><span class="n">nextId</span><span class="p">();</span>
<a name="line-201"></a><span class="p">}</span>
<a name="line-202"></a>
<a name="line-203"></a><span class="n">QList</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="o">&gt;</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">itemsList</span><span class="p">()</span> <span class="k">const</span>
<a name="line-204"></a><span class="p">{</span>
<a name="line-205"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="o">&gt;</span> <span class="n">urls</span><span class="p">;</span>
<a name="line-206"></a>
<a name="line-207"></a> <span class="k">for</span> <span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">AdvPrintPhoto</span><span class="o">*&gt;::</span><span class="n">iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">begin</span><span class="p">()</span> <span class="p">;</span>
<a name="line-208"></a> <span class="n">it</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">end</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">it</span><span class="p">)</span>
<a name="line-209"></a> <span class="p">{</span>
<a name="line-210"></a> <span class="n">AdvPrintPhoto</span><span class="o">*</span> <span class="k">const</span> <span class="n">photo</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">AdvPrintPhoto</span><span class="o">*&gt;</span><span class="p">(</span><span class="o">*</span><span class="n">it</span><span class="p">);</span>
<a name="line-211"></a> <span class="n">urls</span> <span class="o">&lt;&lt;</span> <span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_url</span><span class="p">;</span>
<a name="line-212"></a> <span class="p">}</span>
<a name="line-213"></a>
<a name="line-214"></a> <span class="k">return</span> <span class="n">urls</span><span class="p">;</span>
<a name="line-215"></a><span class="p">}</span>
<a name="line-216"></a>
<a name="line-217"></a><span class="kt">void</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">setItemsList</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="o">&gt;&amp;</span> <span class="n">fileList</span><span class="p">)</span>
<a name="line-218"></a><span class="p">{</span>
<a name="line-219"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="o">&gt;</span> <span class="n">list</span> <span class="o">=</span> <span class="n">fileList</span><span class="p">;</span>
<a name="line-220"></a>
<a name="line-221"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-222"></a> <span class="p">{</span>
<a name="line-223"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
<a name="line-224"></a> <span class="p">}</span>
<a name="line-225"></a>
<a name="line-226"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-227"></a>
<a name="line-228"></a> <span class="k">if</span> <span class="p">(</span><span class="n">list</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span><span class="p">)</span>
<a name="line-229"></a> <span class="p">{</span>
<a name="line-230"></a> <span class="n">list</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span><span class="o">-&gt;</span><span class="n">currentSelectedItems</span><span class="p">();</span>
<a name="line-231"></a> <span class="p">}</span>
<a name="line-232"></a>
<a name="line-233"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">list</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-234"></a> <span class="p">{</span>
<a name="line-235"></a> <span class="n">AdvPrintPhoto</span><span class="o">*</span> <span class="k">const</span> <span class="n">photo</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AdvPrintPhoto</span><span class="p">(</span><span class="mi">150</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span><span class="p">);</span>
<a name="line-236"></a> <span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_url</span> <span class="o">=</span> <span class="n">list</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
<a name="line-237"></a> <span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_first</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-238"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">photo</span><span class="p">);</span>
<a name="line-239"></a> <span class="p">}</span>
<a name="line-240"></a>
<a name="line-241"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cropPage</span><span class="o">-&gt;</span><span class="n">ui</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">BtnCropPrev</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-242"></a>
<a name="line-243"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span>
<a name="line-244"></a> <span class="p">{</span>
<a name="line-245"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cropPage</span><span class="o">-&gt;</span><span class="n">ui</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">BtnCropNext</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-246"></a> <span class="p">}</span>
<a name="line-247"></a>
<a name="line-248"></a> <span class="n">emit</span> <span class="n">currentIdChanged</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">photoPage</span><span class="o">-&gt;</span><span class="n">id</span><span class="p">());</span>
<a name="line-249"></a><span class="p">}</span>
<a name="line-250"></a>
<a name="line-251"></a><span class="kt">void</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">updateCropFrame</span><span class="p">(</span><span class="n">AdvPrintPhoto</span><span class="o">*</span> <span class="k">const</span> <span class="n">photo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">photoIndex</span><span class="p">)</span>
<a name="line-252"></a><span class="p">{</span>
<a name="line-253"></a> <span class="kt">int</span> <span class="n">sizeIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photoPage</span><span class="o">-&gt;</span><span class="n">ui</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">ListPhotoSizes</span><span class="o">-&gt;</span><span class="n">currentRow</span><span class="p">();</span>
<a name="line-254"></a> <span class="n">AdvPrintPhotoSize</span><span class="o">*</span> <span class="k">const</span> <span class="n">s</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">photosizes</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">sizeIndex</span><span class="p">);</span>
<a name="line-255"></a>
<a name="line-256"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cropPage</span><span class="o">-&gt;</span><span class="n">ui</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">cropFrame</span><span class="o">-&gt;</span><span class="n">init</span><span class="p">(</span><span class="n">photo</span><span class="p">,</span>
<a name="line-257"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">getLayout</span><span class="p">(</span><span class="n">photoIndex</span><span class="p">,</span> <span class="n">sizeIndex</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">(),</span>
<a name="line-258"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">getLayout</span><span class="p">(</span><span class="n">photoIndex</span><span class="p">,</span> <span class="n">sizeIndex</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">(),</span>
<a name="line-259"></a> <span class="n">s</span><span class="o">-&gt;</span><span class="n">m_autoRotate</span><span class="p">,</span>
<a name="line-260"></a> <span class="nb">true</span><span class="p">);</span>
<a name="line-261"></a>
<a name="line-262"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cropPage</span><span class="o">-&gt;</span><span class="n">ui</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">LblCropPhoto</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Photo %1 of %2&quot;</span><span class="p">,</span>
<a name="line-263"></a> <span class="n">photoIndex</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span>
<a name="line-264"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">count</span><span class="p">()));</span>
<a name="line-265"></a><span class="p">}</span>
<a name="line-266"></a>
<a name="line-267"></a><span class="kt">void</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">previewPhotos</span><span class="p">()</span>
<a name="line-268"></a><span class="p">{</span>
<a name="line-269"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">photosizes</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-270"></a> <span class="p">{</span>
<a name="line-271"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_DPLUGIN_GENERIC_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Photo sizes is null&quot;</span><span class="p">;</span>
<a name="line-272"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-273"></a> <span class="p">}</span>
<a name="line-274"></a>
<a name="line-275"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">previewThread</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">();</span>
<a name="line-276"></a>
<a name="line-277"></a> <span class="c1">// get the selected layout</span>
<a name="line-278"></a>
<a name="line-279"></a> <span class="kt">int</span> <span class="n">photoCount</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">count</span><span class="p">();</span>
<a name="line-280"></a><span class="hll"> <span class="kt">int</span> <span class="n">curr</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photoPage</span><span class="o">-&gt;</span><span class="n">ui</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">ListPhotoSizes</span><span class="o">-&gt;</span><span class="n">currentRow</span><span class="p">();</span><span class='error2'>&lt;--- Shadowed declaration</span>
</span><a name="line-281"></a> <span class="n">AdvPrintPhotoSize</span><span class="o">*</span> <span class="k">const</span> <span class="n">s</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">photosizes</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">curr</span><span class="p">);</span>
<a name="line-282"></a> <span class="kt">int</span> <span class="n">emptySlots</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-283"></a> <span class="kt">int</span> <span class="n">pageCount</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-284"></a> <span class="kt">int</span> <span class="n">photosPerPage</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-285"></a>
<a name="line-286"></a> <span class="k">if</span> <span class="p">(</span><span class="n">photoCount</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-287"></a> <span class="p">{</span>
<a name="line-288"></a> <span class="c1">// how many pages? Recall that the first layout item is the paper size</span>
<a name="line-289"></a>
<a name="line-290"></a> <span class="n">photosPerPage</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">m_layouts</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-291"></a> <span class="kt">int</span> <span class="n">remainder</span> <span class="o">=</span> <span class="n">photoCount</span> <span class="o">%</span> <span class="n">photosPerPage</span><span class="p">;</span>
<a name="line-292"></a>
<a name="line-293"></a> <span class="k">if</span> <span class="p">(</span><span class="n">remainder</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-294"></a> <span class="p">{</span>
<a name="line-295"></a> <span class="n">emptySlots</span> <span class="o">=</span> <span class="n">photosPerPage</span> <span class="o">-</span> <span class="n">remainder</span><span class="p">;</span>
<a name="line-296"></a> <span class="p">}</span>
<a name="line-297"></a>
<a name="line-298"></a> <span class="n">pageCount</span> <span class="o">=</span> <span class="n">photoCount</span> <span class="o">/</span> <span class="n">photosPerPage</span><span class="p">;</span>
<a name="line-299"></a>
<a name="line-300"></a> <span class="k">if</span> <span class="p">(</span><span class="n">emptySlots</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-301"></a> <span class="p">{</span>
<a name="line-302"></a> <span class="n">pageCount</span><span class="o">++</span><span class="p">;</span>
<a name="line-303"></a> <span class="p">}</span>
<a name="line-304"></a> <span class="p">}</span>
<a name="line-305"></a>
<a name="line-306"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photoPage</span><span class="o">-&gt;</span><span class="n">ui</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">LblPhotoCount</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">photoCount</span><span class="p">));</span>
<a name="line-307"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photoPage</span><span class="o">-&gt;</span><span class="n">ui</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">LblSheetsPrinted</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">pageCount</span><span class="p">));</span>
<a name="line-308"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photoPage</span><span class="o">-&gt;</span><span class="n">ui</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">LblEmptySlots</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">emptySlots</span><span class="p">));</span>
<a name="line-309"></a>
<a name="line-310"></a> <span class="k">if</span> <span class="p">(</span><span class="n">photoCount</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-311"></a> <span class="p">{</span>
<a name="line-312"></a> <span class="c1">// photo previews</span>
<a name="line-313"></a> <span class="c1">// preview the first page.</span>
<a name="line-314"></a> <span class="c1">// find the first page of photos</span>
<a name="line-315"></a>
<a name="line-316"></a> <span class="kt">int</span> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-317"></a> <span class="kt">int</span> <span class="n">page</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-318"></a> <span class="kt">int</span> <span class="n">current</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-319"></a>
<a name="line-320"></a> <span class="k">for</span> <span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">AdvPrintPhoto</span><span class="o">*&gt;::</span><span class="n">iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">begin</span><span class="p">()</span> <span class="p">;</span>
<a name="line-321"></a> <span class="n">it</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">.</span><span class="n">end</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">it</span><span class="p">)</span>
<a name="line-322"></a> <span class="p">{</span>
<a name="line-323"></a> <span class="n">AdvPrintPhoto</span><span class="o">*</span> <span class="k">const</span> <span class="n">photo</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">AdvPrintPhoto</span><span class="o">*&gt;</span><span class="p">(</span><span class="o">*</span><span class="n">it</span><span class="p">);</span>
<a name="line-324"></a>
<a name="line-325"></a> <span class="k">if</span> <span class="p">(</span><span class="n">page</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">currentPreviewPage</span><span class="p">)</span>
<a name="line-326"></a> <span class="p">{</span>
<a name="line-327"></a> <span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_cropRegion</span><span class="p">.</span><span class="n">setRect</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<a name="line-328"></a> <span class="n">photo</span><span class="o">-&gt;</span><span class="n">m_rotation</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-329"></a><span class="hll"> <span class="n">QRect</span><span class="o">*</span> <span class="k">const</span> <span class="n">curr</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">m_layouts</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">count</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-330"></a> <span class="n">photo</span><span class="o">-&gt;</span><span class="n">updateCropRegion</span><span class="p">(</span><span class="n">curr</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">(),</span>
<a name="line-331"></a> <span class="n">curr</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">(),</span>
<a name="line-332"></a> <span class="n">s</span><span class="o">-&gt;</span><span class="n">m_autoRotate</span><span class="p">);</span>
<a name="line-333"></a> <span class="p">}</span>
<a name="line-334"></a>
<a name="line-335"></a> <span class="n">count</span><span class="o">++</span><span class="p">;</span>
<a name="line-336"></a>
<a name="line-337"></a> <span class="k">if</span> <span class="p">(</span><span class="n">count</span> <span class="o">&gt;=</span> <span class="n">photosPerPage</span><span class="p">)</span>
<a name="line-338"></a> <span class="p">{</span>
<a name="line-339"></a> <span class="k">if</span> <span class="p">(</span><span class="n">page</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">currentPreviewPage</span><span class="p">)</span>
<a name="line-340"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-341"></a>
<a name="line-342"></a> <span class="n">page</span><span class="o">++</span><span class="p">;</span>
<a name="line-343"></a> <span class="n">current</span> <span class="o">+=</span> <span class="n">photosPerPage</span><span class="p">;</span>
<a name="line-344"></a> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-345"></a> <span class="p">}</span>
<a name="line-346"></a> <span class="p">}</span>
<a name="line-347"></a>
<a name="line-348"></a> <span class="c1">// send this photo list to the painter</span>
<a name="line-349"></a>
<a name="line-350"></a> <span class="n">AdvPrintSettings</span><span class="o">*</span> <span class="k">const</span> <span class="n">pwSettings</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AdvPrintSettings</span><span class="p">;</span>
<a name="line-351"></a> <span class="n">pwSettings</span><span class="o">-&gt;</span><span class="n">photos</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">photos</span><span class="p">;</span>
<a name="line-352"></a> <span class="n">pwSettings</span><span class="o">-&gt;</span><span class="n">outputLayouts</span> <span class="o">=</span> <span class="n">s</span><span class="p">;</span>
<a name="line-353"></a> <span class="n">pwSettings</span><span class="o">-&gt;</span><span class="n">currentPreviewPage</span> <span class="o">=</span> <span class="n">current</span><span class="p">;</span>
<a name="line-354"></a> <span class="n">pwSettings</span><span class="o">-&gt;</span><span class="n">disableCrop</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cropPage</span><span class="o">-&gt;</span><span class="n">ui</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">m_disableCrop</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">();</span>
<a name="line-355"></a>
<a name="line-356"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">previewThread</span><span class="o">-&gt;</span><span class="n">preview</span><span class="p">(</span><span class="n">pwSettings</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photoPage</span><span class="o">-&gt;</span><span class="n">ui</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">BmpFirstPagePreview</span><span class="o">-&gt;</span><span class="n">size</span><span class="p">());</span>
<a name="line-357"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">previewThread</span><span class="o">-&gt;</span><span class="n">start</span><span class="p">();</span>
<a name="line-358"></a> <span class="p">}</span>
<a name="line-359"></a> <span class="k">else</span>
<a name="line-360"></a> <span class="p">{</span>
<a name="line-361"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photoPage</span><span class="o">-&gt;</span><span class="n">ui</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">BmpFirstPagePreview</span><span class="o">-&gt;</span><span class="n">clear</span><span class="p">();</span>
<a name="line-362"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photoPage</span><span class="o">-&gt;</span><span class="n">ui</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">LblPreview</span><span class="o">-&gt;</span><span class="n">clear</span><span class="p">();</span>
<a name="line-363"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photoPage</span><span class="o">-&gt;</span><span class="n">ui</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">LblPreview</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Page %1 of %2&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">));</span>
<a name="line-364"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photoPage</span><span class="o">-&gt;</span><span class="n">manageBtnPreviewPage</span><span class="p">();</span>
<a name="line-365"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photoPage</span><span class="o">-&gt;</span><span class="n">update</span><span class="p">();</span>
<a name="line-366"></a> <span class="p">}</span>
<a name="line-367"></a><span class="p">}</span>
<a name="line-368"></a>
<a name="line-369"></a><span class="kt">void</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">slotPreview</span><span class="p">(</span><span class="k">const</span> <span class="n">QImage</span><span class="o">&amp;</span> <span class="n">img</span><span class="p">)</span>
<a name="line-370"></a><span class="p">{</span>
<a name="line-371"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_DPLUGIN_GENERIC_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Receive Preview&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">img</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
<a name="line-372"></a>
<a name="line-373"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photoPage</span><span class="o">-&gt;</span><span class="n">ui</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">BmpFirstPagePreview</span><span class="o">-&gt;</span><span class="n">clear</span><span class="p">();</span>
<a name="line-374"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photoPage</span><span class="o">-&gt;</span><span class="n">ui</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">BmpFirstPagePreview</span><span class="o">-&gt;</span><span class="n">setPixmap</span><span class="p">(</span><span class="n">QPixmap</span><span class="o">::</span><span class="n">fromImage</span><span class="p">(</span><span class="n">img</span><span class="p">));</span>
<a name="line-375"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photoPage</span><span class="o">-&gt;</span><span class="n">ui</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">LblPreview</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Page %1 of %2&quot;</span><span class="p">,</span>
<a name="line-376"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">currentPreviewPage</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span>
<a name="line-377"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photoPage</span><span class="o">-&gt;</span><span class="n">getPageCount</span><span class="p">()));</span>
<a name="line-378"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photoPage</span><span class="o">-&gt;</span><span class="n">manageBtnPreviewPage</span><span class="p">();</span>
<a name="line-379"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">photoPage</span><span class="o">-&gt;</span><span class="n">update</span><span class="p">();</span>
<a name="line-380"></a><span class="p">}</span>
<a name="line-381"></a>
<a name="line-382"></a><span class="kt">int</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">normalizedInt</span><span class="p">(</span><span class="kt">double</span> <span class="n">n</span><span class="p">)</span>
<a name="line-383"></a><span class="p">{</span>
<a name="line-384"></a> <span class="k">return</span> <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">n</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">);</span>
<a name="line-385"></a><span class="p">}</span>
<a name="line-386"></a>
<a name="line-387"></a><span class="kt">bool</span> <span class="n">AdvPrintWizard</span><span class="o">::</span><span class="n">eventFilter</span><span class="p">(</span><span class="n">QObject</span><span class="o">*</span> <span class="n">o</span><span class="p">,</span> <span class="n">QEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
<a name="line-388"></a><span class="p">{</span>
<a name="line-389"></a> <span class="k">if</span> <span class="p">(</span><span class="n">e</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">type</span><span class="p">()</span> <span class="o">==</span> <span class="n">QEvent</span><span class="o">::</span><span class="n">KeyRelease</span><span class="p">))</span>
<a name="line-390"></a> <span class="p">{</span>
<a name="line-391"></a> <span class="n">QKeyEvent</span><span class="o">*</span> <span class="k">const</span> <span class="n">k</span> <span class="o">=</span> <span class="p">(</span><span class="n">QKeyEvent</span><span class="o">*</span><span class="p">)</span><span class="n">e</span><span class="p">;</span>
<a name="line-392"></a>
<a name="line-393"></a> <span class="k">if</span> <span class="p">((</span><span class="n">k</span><span class="o">-&gt;</span><span class="n">key</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Key_PageUp</span><span class="p">)</span> <span class="o">||</span>
<a name="line-394"></a> <span class="p">(</span><span class="n">k</span><span class="o">-&gt;</span><span class="n">key</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Key_PageDown</span><span class="p">)</span> <span class="o">||</span>
<a name="line-395"></a> <span class="p">(</span><span class="n">k</span><span class="o">-&gt;</span><span class="n">key</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Key_Up</span><span class="p">)</span> <span class="o">||</span>
<a name="line-396"></a> <span class="p">(</span><span class="n">k</span><span class="o">-&gt;</span><span class="n">key</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Key_Down</span><span class="p">))</span>
<a name="line-397"></a> <span class="p">{</span>
<a name="line-398"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentPage</span><span class="p">()</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cropPage</span><span class="p">)</span>
<a name="line-399"></a> <span class="p">{</span>
<a name="line-400"></a> <span class="c1">// Pass the key event to move crop frame region.</span>
<a name="line-401"></a>
<a name="line-402"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cropPage</span><span class="o">-&gt;</span><span class="n">ui</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">cropFrame</span><span class="o">-&gt;</span><span class="n">setFocus</span><span class="p">();</span>
<a name="line-403"></a> <span class="n">QApplication</span><span class="o">::</span><span class="n">sendEvent</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cropPage</span><span class="o">-&gt;</span><span class="n">ui</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">cropFrame</span><span class="p">,</span> <span class="n">e</span><span class="p">);</span>
<a name="line-404"></a>
<a name="line-405"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span> <span class="c1">// eat event</span>
<a name="line-406"></a> <span class="p">}</span>
<a name="line-407"></a> <span class="p">}</span>
<a name="line-408"></a> <span class="p">}</span>
<a name="line-409"></a>
<a name="line-410"></a> <span class="k">return</span> <span class="n">QWizard</span><span class="o">::</span><span class="n">eventFilter</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="n">e</span><span class="p">);</span>
<a name="line-411"></a><span class="p">}</span>
<a name="line-412"></a>
<a name="line-413"></a><span class="p">}</span> <span class="c1">// namespace DigikamGenericPrintCreatorPlugin</span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/6.html b/static/reports/cppcheck/master/6.html
index 5e055d5a0..736139d29 100644
--- a/static/reports/cppcheck/master/6.html
+++ b/static/reports/cppcheck/master/6.html
@@ -1,1181 +1,1181 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/dplugins/generic/webservices/box/boxtalker.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/dplugins/generic/webservices/box/boxtalker.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> boxtalker.cpp</p>
<a href='6.html#line-500'> shadowVar 500</a><a href='6.html#line-509'> shadowVar 509</a>
</div>
<div id="content">
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
<a name="line-6"></a><span class="cm"> * Date : 2018-05-20</span>
<a name="line-7"></a><span class="cm"> * Description : a tool to export images to Box web service</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2018 by Tarek Talaat &lt;tarektalaat93 at gmail dot com&gt;</span>
<a name="line-10"></a><span class="cm"> *</span>
<a name="line-11"></a><span class="cm"> * This program is free software; you can redistribute it</span>
<a name="line-12"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
<a name="line-13"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
<a name="line-14"></a><span class="cm"> * either version 2, or (at your option) any later version.</span>
<a name="line-15"></a><span class="cm"> *</span>
<a name="line-16"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
<a name="line-17"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="line-18"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
<a name="line-19"></a><span class="cm"> * GNU General Public License for more details.</span>
<a name="line-20"></a><span class="cm"> *</span>
<a name="line-21"></a><span class="cm"> * ============================================================ */</span>
<a name="line-22"></a>
<a name="line-23"></a><span class="cp">#include</span> <span class="cpf">&quot;boxtalker.h&quot;</span><span class="cp"></span>
<a name="line-24"></a>
<a name="line-25"></a><span class="c1">// Qt includes</span>
<a name="line-26"></a>
<a name="line-27"></a><span class="cp">#include</span> <span class="cpf">&lt;QMimeDatabase&gt;</span><span class="cp"></span>
<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;QJsonDocument&gt;</span><span class="cp"></span>
<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QJsonParseError&gt;</span><span class="cp"></span>
<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QJsonObject&gt;</span><span class="cp"></span>
<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QJsonValue&gt;</span><span class="cp"></span>
<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QJsonArray&gt;</span><span class="cp"></span>
<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QByteArray&gt;</span><span class="cp"></span>
<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QList&gt;</span><span class="cp"></span>
<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QPair&gt;</span><span class="cp"></span>
<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QFileInfo&gt;</span><span class="cp"></span>
<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&lt;QWidget&gt;</span><span class="cp"></span>
<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&lt;QSettings&gt;</span><span class="cp"></span>
<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&lt;QMessageBox&gt;</span><span class="cp"></span>
<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&lt;QApplication&gt;</span><span class="cp"></span>
<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&lt;QDesktopServices&gt;</span><span class="cp"></span>
<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&lt;QHttpMultiPart&gt;</span><span class="cp"></span>
<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&lt;QNetworkAccessManager&gt;</span><span class="cp"></span>
<a name="line-44"></a>
<a name="line-45"></a><span class="c1">// KDE includes</span>
<a name="line-46"></a>
<a name="line-47"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
<a name="line-48"></a>
<a name="line-49"></a><span class="c1">// Local includes</span>
<a name="line-50"></a>
<a name="line-51"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
<a name="line-52"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_version.h&quot;</span><span class="cp"></span>
<a name="line-53"></a><span class="cp">#include</span> <span class="cpf">&quot;wstoolutils.h&quot;</span><span class="cp"></span>
<a name="line-54"></a><span class="cp">#include</span> <span class="cpf">&quot;boxwindow.h&quot;</span><span class="cp"></span>
<a name="line-55"></a><span class="cp">#include</span> <span class="cpf">&quot;boxitem.h&quot;</span><span class="cp"></span>
<a name="line-56"></a><span class="cp">#include</span> <span class="cpf">&quot;previewloadthread.h&quot;</span><span class="cp"></span>
<a name="line-57"></a><span class="cp">#include</span> <span class="cpf">&quot;o0settingsstore.h&quot;</span><span class="cp"></span>
<a name="line-58"></a>
<a name="line-59"></a><span class="k">namespace</span> <span class="n">DigikamGenericBoxPlugin</span>
<a name="line-60"></a><span class="p">{</span>
<a name="line-61"></a>
<a name="line-62"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">BOXTalker</span><span class="o">::</span><span class="n">Private</span>
<a name="line-63"></a><span class="p">{</span>
<a name="line-64"></a><span class="k">public</span><span class="o">:</span>
<a name="line-65"></a>
<a name="line-66"></a> <span class="k">enum</span> <span class="n">State</span>
<a name="line-67"></a> <span class="p">{</span>
<a name="line-68"></a> <span class="n">BOX_USERNAME</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
<a name="line-69"></a> <span class="n">BOX_LISTFOLDERS</span><span class="p">,</span>
<a name="line-70"></a> <span class="n">BOX_CREATEFOLDER</span><span class="p">,</span>
<a name="line-71"></a> <span class="n">BOX_ADDPHOTO</span>
<a name="line-72"></a> <span class="p">};</span>
<a name="line-73"></a>
<a name="line-74"></a><span class="k">public</span><span class="o">:</span>
<a name="line-75"></a>
<a name="line-76"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
<a name="line-77"></a> <span class="p">{</span>
<a name="line-78"></a> <span class="n">clientId</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;yvd43v8av9zgg9phig80m2dc3r7mks4t&quot;</span><span class="p">);</span>
<a name="line-79"></a> <span class="n">clientSecret</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;KJkuMjvzOKDMyp3oxweQBEYixg678Fh5&quot;</span><span class="p">);</span>
<a name="line-80"></a>
<a name="line-81"></a> <span class="n">authUrl</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://account.box.com/api/oauth2/authorize&quot;</span><span class="p">);</span>
<a name="line-82"></a> <span class="n">tokenUrl</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://api.box.com/oauth2/token&quot;</span><span class="p">);</span>
<a name="line-83"></a> <span class="n">redirectUrl</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://app.box.com&quot;</span><span class="p">);</span>
<a name="line-84"></a>
<a name="line-85"></a> <span class="n">state</span> <span class="o">=</span> <span class="n">BOX_USERNAME</span><span class="p">;</span>
<a name="line-86"></a>
<a name="line-87"></a> <span class="n">parent</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-88"></a> <span class="n">netMngr</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-89"></a> <span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-90"></a> <span class="n">settings</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-91"></a> <span class="n">o2</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-92"></a> <span class="p">}</span>
<a name="line-93"></a>
<a name="line-94"></a><span class="k">public</span><span class="o">:</span>
<a name="line-95"></a>
<a name="line-96"></a> <span class="n">QString</span> <span class="n">clientId</span><span class="p">;</span>
<a name="line-97"></a> <span class="n">QString</span> <span class="n">clientSecret</span><span class="p">;</span>
<a name="line-98"></a> <span class="n">QString</span> <span class="n">authUrl</span><span class="p">;</span>
<a name="line-99"></a> <span class="n">QString</span> <span class="n">tokenUrl</span><span class="p">;</span>
<a name="line-100"></a> <span class="n">QString</span> <span class="n">redirectUrl</span><span class="p">;</span>
<a name="line-101"></a>
<a name="line-102"></a> <span class="n">State</span> <span class="n">state</span><span class="p">;</span>
<a name="line-103"></a>
<a name="line-104"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="n">parent</span><span class="p">;</span>
<a name="line-105"></a>
<a name="line-106"></a> <span class="n">QNetworkAccessManager</span><span class="o">*</span> <span class="n">netMngr</span><span class="p">;</span>
<a name="line-107"></a> <span class="n">QNetworkReply</span><span class="o">*</span> <span class="n">reply</span><span class="p">;</span>
<a name="line-108"></a>
<a name="line-109"></a> <span class="n">QSettings</span><span class="o">*</span> <span class="n">settings</span><span class="p">;</span>
<a name="line-110"></a>
<a name="line-111"></a> <span class="n">O2</span><span class="o">*</span> <span class="n">o2</span><span class="p">;</span>
<a name="line-112"></a>
<a name="line-113"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QPair</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">foldersList</span><span class="p">;</span>
<a name="line-114"></a><span class="p">};</span>
<a name="line-115"></a>
<a name="line-116"></a><span class="n">BOXTalker</span><span class="o">::</span><span class="n">BOXTalker</span><span class="p">(</span><span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span><span class="p">)</span>
<a name="line-117"></a> <span class="o">:</span> <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">Private</span><span class="p">)</span>
<a name="line-118"></a><span class="p">{</span>
<a name="line-119"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span><span class="p">;</span>
<a name="line-120"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QNetworkAccessManager</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-121"></a>
<a name="line-122"></a> <span class="n">connect</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">boxLinkingFailed</span><span class="p">()),</span>
<a name="line-123"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotLinkingFailed</span><span class="p">()));</span>
<a name="line-124"></a>
<a name="line-125"></a> <span class="n">connect</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">boxLinkingSucceeded</span><span class="p">()),</span>
<a name="line-126"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotLinkingSucceeded</span><span class="p">()));</span>
<a name="line-127"></a>
<a name="line-128"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">finished</span><span class="p">(</span><span class="n">QNetworkReply</span><span class="o">*</span><span class="p">)),</span>
<a name="line-129"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotFinished</span><span class="p">(</span><span class="n">QNetworkReply</span><span class="o">*</span><span class="p">)));</span>
<a name="line-130"></a>
<a name="line-131"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">o2</span> <span class="o">=</span> <span class="k">new</span> <span class="n">O2</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-132"></a>
<a name="line-133"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">o2</span><span class="o">-&gt;</span><span class="n">setClientId</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">clientId</span><span class="p">);</span>
<a name="line-134"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">o2</span><span class="o">-&gt;</span><span class="n">setClientSecret</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">clientSecret</span><span class="p">);</span>
<a name="line-135"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">o2</span><span class="o">-&gt;</span><span class="n">setRefreshTokenUrl</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tokenUrl</span><span class="p">);</span>
<a name="line-136"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">o2</span><span class="o">-&gt;</span><span class="n">setRequestUrl</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">authUrl</span><span class="p">);</span>
<a name="line-137"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">o2</span><span class="o">-&gt;</span><span class="n">setTokenUrl</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tokenUrl</span><span class="p">);</span>
<a name="line-138"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">o2</span><span class="o">-&gt;</span><span class="n">setLocalPort</span><span class="p">(</span><span class="mi">8000</span><span class="p">);</span>
<a name="line-139"></a>
<a name="line-140"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span> <span class="o">=</span> <span class="n">WSToolUtils</span><span class="o">::</span><span class="n">getOauthSettings</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-141"></a> <span class="n">O0SettingsStore</span><span class="o">*</span> <span class="k">const</span> <span class="n">store</span> <span class="o">=</span> <span class="k">new</span> <span class="n">O0SettingsStore</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="n">O2_ENCRYPTION_KEY</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
<a name="line-142"></a> <span class="n">store</span><span class="o">-&gt;</span><span class="n">setGroupKey</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Box&quot;</span><span class="p">));</span>
<a name="line-143"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">o2</span><span class="o">-&gt;</span><span class="n">setStore</span><span class="p">(</span><span class="n">store</span><span class="p">);</span>
<a name="line-144"></a>
<a name="line-145"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">o2</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">linkingFailed</span><span class="p">()),</span>
<a name="line-146"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotLinkingFailed</span><span class="p">()));</span>
<a name="line-147"></a>
<a name="line-148"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">o2</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">linkingSucceeded</span><span class="p">()),</span>
<a name="line-149"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotLinkingSucceeded</span><span class="p">()));</span>
<a name="line-150"></a>
<a name="line-151"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">o2</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">openBrowser</span><span class="p">(</span><span class="n">QUrl</span><span class="p">)),</span>
<a name="line-152"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotOpenBrowser</span><span class="p">(</span><span class="n">QUrl</span><span class="p">)));</span>
<a name="line-153"></a><span class="p">}</span>
<a name="line-154"></a>
<a name="line-155"></a><span class="n">BOXTalker</span><span class="o">::~</span><span class="n">BOXTalker</span><span class="p">()</span>
<a name="line-156"></a><span class="p">{</span>
<a name="line-157"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
<a name="line-158"></a> <span class="p">{</span>
<a name="line-159"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">abort</span><span class="p">();</span>
<a name="line-160"></a> <span class="p">}</span>
<a name="line-161"></a>
<a name="line-162"></a> <span class="n">WSToolUtils</span><span class="o">::</span><span class="n">removeTemporaryDir</span><span class="p">(</span><span class="s">&quot;box&quot;</span><span class="p">);</span>
<a name="line-163"></a>
<a name="line-164"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
<a name="line-165"></a><span class="p">}</span>
<a name="line-166"></a>
<a name="line-167"></a><span class="kt">void</span> <span class="n">BOXTalker</span><span class="o">::</span><span class="n">link</span><span class="p">()</span>
<a name="line-168"></a><span class="p">{</span>
<a name="line-169"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-170"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">o2</span><span class="o">-&gt;</span><span class="n">link</span><span class="p">();</span>
<a name="line-171"></a><span class="p">}</span>
<a name="line-172"></a>
<a name="line-173"></a><span class="kt">void</span> <span class="n">BOXTalker</span><span class="o">::</span><span class="n">unLink</span><span class="p">()</span>
<a name="line-174"></a><span class="p">{</span>
<a name="line-175"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">o2</span><span class="o">-&gt;</span><span class="n">unlink</span><span class="p">();</span>
<a name="line-176"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">beginGroup</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Box&quot;</span><span class="p">));</span>
<a name="line-177"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">remove</span><span class="p">(</span><span class="n">QString</span><span class="p">());</span>
<a name="line-178"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">endGroup</span><span class="p">();</span>
<a name="line-179"></a><span class="p">}</span>
<a name="line-180"></a>
<a name="line-181"></a><span class="kt">void</span> <span class="n">BOXTalker</span><span class="o">::</span><span class="n">slotLinkingFailed</span><span class="p">()</span>
<a name="line-182"></a><span class="p">{</span>
<a name="line-183"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;LINK to Box fail&quot;</span><span class="p">;</span>
<a name="line-184"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-185"></a><span class="p">}</span>
<a name="line-186"></a>
<a name="line-187"></a><span class="kt">void</span> <span class="n">BOXTalker</span><span class="o">::</span><span class="n">slotLinkingSucceeded</span><span class="p">()</span>
<a name="line-188"></a><span class="p">{</span>
<a name="line-189"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">o2</span><span class="o">-&gt;</span><span class="n">linked</span><span class="p">())</span>
<a name="line-190"></a> <span class="p">{</span>
<a name="line-191"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;UNLINK to Box ok&quot;</span><span class="p">;</span>
<a name="line-192"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-193"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-194"></a> <span class="p">}</span>
<a name="line-195"></a>
<a name="line-196"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;LINK to Box ok&quot;</span><span class="p">;</span>
<a name="line-197"></a> <span class="n">emit</span> <span class="nf">signalLinkingSucceeded</span><span class="p">();</span>
<a name="line-198"></a><span class="p">}</span>
<a name="line-199"></a>
<a name="line-200"></a><span class="kt">bool</span> <span class="n">BOXTalker</span><span class="o">::</span><span class="n">authenticated</span><span class="p">()</span>
<a name="line-201"></a><span class="p">{</span>
<a name="line-202"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">o2</span><span class="o">-&gt;</span><span class="n">linked</span><span class="p">();</span>
<a name="line-203"></a><span class="p">}</span>
<a name="line-204"></a>
<a name="line-205"></a><span class="kt">void</span> <span class="n">BOXTalker</span><span class="o">::</span><span class="n">cancel</span><span class="p">()</span>
<a name="line-206"></a><span class="p">{</span>
<a name="line-207"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
<a name="line-208"></a> <span class="p">{</span>
<a name="line-209"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">abort</span><span class="p">();</span>
<a name="line-210"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-211"></a> <span class="p">}</span>
<a name="line-212"></a>
<a name="line-213"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-214"></a><span class="p">}</span>
<a name="line-215"></a>
<a name="line-216"></a><span class="kt">void</span> <span class="n">BOXTalker</span><span class="o">::</span><span class="n">slotOpenBrowser</span><span class="p">(</span><span class="k">const</span> <span class="n">QUrl</span><span class="o">&amp;</span> <span class="n">url</span><span class="p">)</span>
<a name="line-217"></a><span class="p">{</span>
<a name="line-218"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Open Browser...&quot;</span><span class="p">;</span>
<a name="line-219"></a> <span class="n">QDesktopServices</span><span class="o">::</span><span class="n">openUrl</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
<a name="line-220"></a><span class="p">}</span>
<a name="line-221"></a>
<a name="line-222"></a><span class="kt">void</span> <span class="n">BOXTalker</span><span class="o">::</span><span class="n">createFolder</span><span class="p">(</span><span class="n">QString</span><span class="o">&amp;</span> <span class="n">path</span><span class="p">)</span>
<a name="line-223"></a><span class="p">{</span>
<a name="line-224"></a> <span class="n">QString</span> <span class="n">name</span> <span class="o">=</span> <span class="n">path</span><span class="p">.</span><span class="n">section</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">),</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<a name="line-225"></a> <span class="n">QString</span> <span class="n">folderPath</span> <span class="o">=</span> <span class="n">path</span><span class="p">.</span><span class="n">section</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">),</span> <span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="mi">2</span><span class="p">);</span>
<a name="line-226"></a>
<a name="line-227"></a> <span class="n">QString</span> <span class="n">id</span><span class="p">;</span>
<a name="line-228"></a>
<a name="line-229"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">foldersList</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-230"></a> <span class="p">{</span>
<a name="line-231"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">foldersList</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">second</span> <span class="o">==</span> <span class="n">folderPath</span><span class="p">)</span>
<a name="line-232"></a> <span class="p">{</span>
<a name="line-233"></a> <span class="n">id</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">foldersList</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">first</span><span class="p">;</span>
<a name="line-234"></a> <span class="p">}</span>
<a name="line-235"></a> <span class="p">}</span>
<a name="line-236"></a>
<a name="line-237"></a> <span class="n">QUrl</span> <span class="n">url</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://api.box.com/2.0/folders&quot;</span><span class="p">));</span>
<a name="line-238"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
<a name="line-239"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/json&quot;</span><span class="p">));</span>
<a name="line-240"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;Bearer %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">o2</span><span class="o">-&gt;</span><span class="n">token</span><span class="p">()).</span><span class="n">toUtf8</span><span class="p">());</span>
<a name="line-241"></a>
<a name="line-242"></a> <span class="n">QByteArray</span> <span class="n">postData</span> <span class="o">=</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">&quot;{</span><span class="se">\&quot;</span><span class="s">name</span><span class="se">\&quot;</span><span class="s">: </span><span class="se">\&quot;</span><span class="s">%1</span><span class="se">\&quot;</span><span class="s">,</span><span class="se">\&quot;</span><span class="s">parent</span><span class="se">\&quot;</span><span class="s">: {</span><span class="se">\&quot;</span><span class="s">id</span><span class="se">\&quot;</span><span class="s">: </span><span class="se">\&quot;</span><span class="s">%2</span><span class="se">\&quot;</span><span class="s">}}&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">name</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">id</span><span class="p">).</span><span class="n">toUtf8</span><span class="p">();</span>
<a name="line-243"></a>
<a name="line-244"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">postData</span><span class="p">);</span>
<a name="line-245"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">BOX_CREATEFOLDER</span><span class="p">;</span>
<a name="line-246"></a>
<a name="line-247"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-248"></a><span class="p">}</span>
<a name="line-249"></a>
<a name="line-250"></a><span class="kt">void</span> <span class="n">BOXTalker</span><span class="o">::</span><span class="n">getUserName</span><span class="p">()</span>
<a name="line-251"></a><span class="p">{</span>
<a name="line-252"></a> <span class="n">QUrl</span> <span class="n">url</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://api.box.com/2.0/users/me&quot;</span><span class="p">));</span>
<a name="line-253"></a>
<a name="line-254"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
<a name="line-255"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;Bearer %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">o2</span><span class="o">-&gt;</span><span class="n">token</span><span class="p">()).</span><span class="n">toUtf8</span><span class="p">());</span>
<a name="line-256"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/json&quot;</span><span class="p">));</span>
<a name="line-257"></a>
<a name="line-258"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">get</span><span class="p">(</span><span class="n">netRequest</span><span class="p">);</span>
<a name="line-259"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">BOX_USERNAME</span><span class="p">;</span>
<a name="line-260"></a>
<a name="line-261"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-262"></a><span class="p">}</span>
<a name="line-263"></a>
<a name="line-264"></a><span class="kt">void</span> <span class="n">BOXTalker</span><span class="o">::</span><span class="n">listFolders</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="cm">/*path*/</span><span class="p">)</span>
<a name="line-265"></a><span class="p">{</span>
<a name="line-266"></a> <span class="n">QUrl</span> <span class="n">url</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;https://api.box.com/2.0/folders/0/items&quot;</span><span class="p">));;</span>
<a name="line-267"></a>
<a name="line-268"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
<a name="line-269"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Authorization&quot;</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;Bearer %1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">o2</span><span class="o">-&gt;</span><span class="n">token</span><span class="p">()).</span><span class="n">toUtf8</span><span class="p">());</span>
<a name="line-270"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;application/json&quot;</span><span class="p">));</span>
<a name="line-271"></a>
<a name="line-272"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">get</span><span class="p">(</span><span class="n">netRequest</span><span class="p">);</span>
<a name="line-273"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">BOX_LISTFOLDERS</span><span class="p">;</span>
<a name="line-274"></a>
<a name="line-275"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-276"></a><span class="p">}</span>
<a name="line-277"></a>
<a name="line-278"></a><span class="kt">bool</span> <span class="n">BOXTalker</span><span class="o">::</span><span class="n">addPhoto</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">imgPath</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">uploadFolder</span><span class="p">,</span> <span class="kt">bool</span> <span class="n">rescale</span><span class="p">,</span> <span class="kt">int</span> <span class="n">maxDim</span><span class="p">,</span> <span class="kt">int</span> <span class="n">imageQuality</span><span class="p">)</span>
<a name="line-279"></a><span class="p">{</span>
<a name="line-280"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
<a name="line-281"></a> <span class="p">{</span>
<a name="line-282"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">abort</span><span class="p">();</span>
<a name="line-283"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-284"></a> <span class="p">}</span>
<a name="line-285"></a>
<a name="line-286"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-287"></a>
<a name="line-288"></a> <span class="n">QMimeDatabase</span> <span class="n">mimeDB</span><span class="p">;</span>
<a name="line-289"></a> <span class="n">QString</span> <span class="n">path</span> <span class="o">=</span> <span class="n">imgPath</span><span class="p">;</span>
<a name="line-290"></a> <span class="n">QString</span> <span class="n">mimeType</span> <span class="o">=</span> <span class="n">mimeDB</span><span class="p">.</span><span class="n">mimeTypeForFile</span><span class="p">(</span><span class="n">path</span><span class="p">).</span><span class="n">name</span><span class="p">();</span>
<a name="line-291"></a>
<a name="line-292"></a> <span class="k">if</span> <span class="p">(</span><span class="n">mimeType</span><span class="p">.</span><span class="n">startsWith</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;image/&quot;</span><span class="p">)))</span>
<a name="line-293"></a> <span class="p">{</span>
<a name="line-294"></a> <span class="n">QImage</span> <span class="n">image</span> <span class="o">=</span> <span class="n">PreviewLoadThread</span><span class="o">::</span><span class="n">loadHighQualitySynchronously</span><span class="p">(</span><span class="n">imgPath</span><span class="p">).</span><span class="n">copyQImage</span><span class="p">();</span>
<a name="line-295"></a>
<a name="line-296"></a> <span class="k">if</span> <span class="p">(</span><span class="n">image</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-297"></a> <span class="p">{</span>
<a name="line-298"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-299"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-300"></a> <span class="p">}</span>
<a name="line-301"></a>
<a name="line-302"></a> <span class="n">path</span> <span class="o">=</span> <span class="n">WSToolUtils</span><span class="o">::</span><span class="n">makeTemporaryDir</span><span class="p">(</span><span class="s">&quot;box&quot;</span><span class="p">).</span><span class="n">filePath</span><span class="p">(</span><span class="n">QFileInfo</span><span class="p">(</span><span class="n">imgPath</span><span class="p">)</span>
<a name="line-303"></a> <span class="p">.</span><span class="n">baseName</span><span class="p">().</span><span class="n">trimmed</span><span class="p">()</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;.jpg&quot;</span><span class="p">));</span>
<a name="line-304"></a>
<a name="line-305"></a> <span class="k">if</span> <span class="p">(</span><span class="n">rescale</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">image</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">maxDim</span> <span class="o">||</span> <span class="n">image</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">maxDim</span><span class="p">))</span>
<a name="line-306"></a> <span class="p">{</span>
<a name="line-307"></a> <span class="n">image</span> <span class="o">=</span> <span class="n">image</span><span class="p">.</span><span class="n">scaled</span><span class="p">(</span><span class="n">maxDim</span><span class="p">,</span> <span class="n">maxDim</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">KeepAspectRatio</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">SmoothTransformation</span><span class="p">);</span>
<a name="line-308"></a> <span class="p">}</span>
<a name="line-309"></a>
<a name="line-310"></a> <span class="n">image</span><span class="p">.</span><span class="n">save</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s">&quot;JPEG&quot;</span><span class="p">,</span> <span class="n">imageQuality</span><span class="p">);</span>
<a name="line-311"></a>
<a name="line-312"></a> <span class="n">DMetadata</span> <span class="n">meta</span><span class="p">;</span>
<a name="line-313"></a>
<a name="line-314"></a> <span class="k">if</span> <span class="p">(</span><span class="n">meta</span><span class="p">.</span><span class="n">load</span><span class="p">(</span><span class="n">imgPath</span><span class="p">))</span>
<a name="line-315"></a> <span class="p">{</span>
<a name="line-316"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setItemDimensions</span><span class="p">(</span><span class="n">image</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
<a name="line-317"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setItemOrientation</span><span class="p">(</span><span class="n">DMetadata</span><span class="o">::</span><span class="n">ORIENTATION_NORMAL</span><span class="p">);</span>
<a name="line-318"></a> <span class="n">meta</span><span class="p">.</span><span class="n">setMetadataWritingMode</span><span class="p">((</span><span class="kt">int</span><span class="p">)</span><span class="n">DMetadata</span><span class="o">::</span><span class="n">WRITE_TO_FILE_ONLY</span><span class="p">);</span>
<a name="line-319"></a> <span class="n">meta</span><span class="p">.</span><span class="n">save</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="nb">true</span><span class="p">);</span>
<a name="line-320"></a> <span class="p">}</span>
<a name="line-321"></a> <span class="p">}</span>
<a name="line-322"></a>
<a name="line-323"></a> <span class="n">QString</span> <span class="n">id</span><span class="p">;</span>
<a name="line-324"></a>
<a name="line-325"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">foldersList</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-326"></a> <span class="p">{</span>
<a name="line-327"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">foldersList</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">second</span> <span class="o">==</span> <span class="n">uploadFolder</span><span class="p">)</span>
<a name="line-328"></a> <span class="p">{</span>
<a name="line-329"></a> <span class="n">id</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">foldersList</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">first</span><span class="p">;</span>
<a name="line-330"></a> <span class="p">}</span>
<a name="line-331"></a> <span class="p">}</span>
<a name="line-332"></a>
<a name="line-333"></a> <span class="n">QHttpMultiPart</span><span class="o">*</span> <span class="k">const</span> <span class="n">multiPart</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QHttpMultiPart</span><span class="p">(</span><span class="n">QHttpMultiPart</span><span class="o">::</span><span class="n">FormDataType</span><span class="p">);</span>
<a name="line-334"></a>
<a name="line-335"></a> <span class="n">QHttpPart</span> <span class="n">attributes</span><span class="p">;</span>
<a name="line-336"></a> <span class="n">QString</span> <span class="n">attributesHeader</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;form-data; name=</span><span class="se">\&quot;</span><span class="s">attributes</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">);</span>
<a name="line-337"></a> <span class="n">attributes</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentDispositionHeader</span><span class="p">,</span> <span class="n">attributesHeader</span><span class="p">);</span>
<a name="line-338"></a>
<a name="line-339"></a> <span class="n">QString</span> <span class="n">postData</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;{</span><span class="se">\&quot;</span><span class="s">name</span><span class="se">\&quot;</span><span class="s">:</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QFileInfo</span><span class="p">(</span><span class="n">imgPath</span><span class="p">).</span><span class="n">fileName</span><span class="p">()</span> <span class="o">+</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;&quot;&#39;</span><span class="p">)</span> <span class="o">+</span>
<a name="line-340"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;, </span><span class="se">\&quot;</span><span class="s">parent</span><span class="se">\&quot;</span><span class="s">:{</span><span class="se">\&quot;</span><span class="s">id</span><span class="se">\&quot;</span><span class="s">:</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">id</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\&quot;</span><span class="s">}}&quot;</span><span class="p">);</span>
<a name="line-341"></a> <span class="n">attributes</span><span class="p">.</span><span class="n">setBody</span><span class="p">(</span><span class="n">postData</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">());</span>
<a name="line-342"></a> <span class="n">multiPart</span><span class="o">-&gt;</span><span class="n">append</span><span class="p">(</span><span class="n">attributes</span><span class="p">);</span>
<a name="line-343"></a>
<a name="line-344"></a> <span class="n">QFile</span><span class="o">*</span> <span class="k">const</span> <span class="n">file</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QFile</span><span class="p">(</span><span class="n">path</span><span class="p">);</span>
<a name="line-345"></a>
<a name="line-346"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">file</span><span class="p">)</span>
<a name="line-347"></a> <span class="p">{</span>
<a name="line-348"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-349"></a> <span class="p">}</span>
<a name="line-350"></a>
<a name="line-351"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">file</span><span class="o">-&gt;</span><span class="n">open</span><span class="p">(</span><span class="n">QIODevice</span><span class="o">::</span><span class="n">ReadOnly</span><span class="p">))</span>
<a name="line-352"></a> <span class="p">{</span>
<a name="line-353"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-354"></a> <span class="p">}</span>
<a name="line-355"></a>
<a name="line-356"></a> <span class="n">QHttpPart</span> <span class="n">imagePart</span><span class="p">;</span>
<a name="line-357"></a> <span class="n">QString</span> <span class="n">imagePartHeader</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;form-data; name=</span><span class="se">\&quot;</span><span class="s">file</span><span class="se">\&quot;</span><span class="s">; filename=</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">)</span> <span class="o">+</span>
<a name="line-358"></a> <span class="n">QFileInfo</span><span class="p">(</span><span class="n">imgPath</span><span class="p">).</span><span class="n">fileName</span><span class="p">()</span> <span class="o">+</span> <span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;&quot;&#39;</span><span class="p">);</span>
<a name="line-359"></a>
<a name="line-360"></a> <span class="n">imagePart</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentDispositionHeader</span><span class="p">,</span> <span class="n">imagePartHeader</span><span class="p">);</span>
<a name="line-361"></a> <span class="n">imagePart</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">mimeType</span><span class="p">);</span>
<a name="line-362"></a>
<a name="line-363"></a> <span class="n">imagePart</span><span class="p">.</span><span class="n">setBodyDevice</span><span class="p">(</span><span class="n">file</span><span class="p">);</span>
<a name="line-364"></a> <span class="n">multiPart</span><span class="o">-&gt;</span><span class="n">append</span><span class="p">(</span><span class="n">imagePart</span><span class="p">);</span>
<a name="line-365"></a>
<a name="line-366"></a> <span class="n">QUrl</span> <span class="nf">url</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;https://upload.box.com/api/2.0/files/content?access_token=%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">o2</span><span class="o">-&gt;</span><span class="n">token</span><span class="p">()));</span>
<a name="line-367"></a>
<a name="line-368"></a> <span class="n">QNetworkRequest</span> <span class="nf">netRequest</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
<a name="line-369"></a> <span class="n">QString</span> <span class="n">content</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;multipart/form-data;boundary=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">multiPart</span><span class="o">-&gt;</span><span class="n">boundary</span><span class="p">());</span>
<a name="line-370"></a> <span class="n">netRequest</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">content</span><span class="p">);</span>
<a name="line-371"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">netMngr</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">netRequest</span><span class="p">,</span> <span class="n">multiPart</span><span class="p">);</span>
<a name="line-372"></a>
<a name="line-373"></a> <span class="c1">// delete the multiPart and file with the reply</span>
<a name="line-374"></a>
<a name="line-375"></a> <span class="n">multiPart</span><span class="o">-&gt;</span><span class="n">setParent</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">);</span>
<a name="line-376"></a>
<a name="line-377"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">BOX_ADDPHOTO</span><span class="p">;</span>
<a name="line-378"></a>
<a name="line-379"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-380"></a><span class="p">}</span>
<a name="line-381"></a>
<a name="line-382"></a><span class="kt">void</span> <span class="n">BOXTalker</span><span class="o">::</span><span class="n">slotFinished</span><span class="p">(</span><span class="n">QNetworkReply</span><span class="o">*</span> <span class="n">reply</span><span class="p">)</span>
<a name="line-383"></a><span class="p">{</span>
<a name="line-384"></a> <span class="k">if</span> <span class="p">(</span><span class="n">reply</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">)</span>
<a name="line-385"></a> <span class="p">{</span>
<a name="line-386"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-387"></a> <span class="p">}</span>
<a name="line-388"></a>
<a name="line-389"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-390"></a>
<a name="line-391"></a> <span class="k">if</span> <span class="p">(</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">error</span><span class="p">()</span> <span class="o">!=</span> <span class="n">QNetworkReply</span><span class="o">::</span><span class="n">NoError</span><span class="p">)</span>
<a name="line-392"></a> <span class="p">{</span>
<a name="line-393"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">!=</span> <span class="n">Private</span><span class="o">::</span><span class="n">BOX_CREATEFOLDER</span><span class="p">)</span>
<a name="line-394"></a> <span class="p">{</span>
<a name="line-395"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-396"></a> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">critical</span><span class="p">(</span><span class="n">QApplication</span><span class="o">::</span><span class="n">activeWindow</span><span class="p">(),</span>
<a name="line-397"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Error&quot;</span><span class="p">),</span> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">errorString</span><span class="p">());</span>
<a name="line-398"></a> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">deleteLater</span><span class="p">();</span>
<a name="line-399"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-400"></a> <span class="p">}</span>
<a name="line-401"></a> <span class="p">}</span>
<a name="line-402"></a>
<a name="line-403"></a> <span class="n">QByteArray</span> <span class="n">buffer</span> <span class="o">=</span> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">readAll</span><span class="p">();</span>
<a name="line-404"></a>
<a name="line-405"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">state</span><span class="p">)</span>
<a name="line-406"></a> <span class="p">{</span>
<a name="line-407"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">BOX_LISTFOLDERS</span><span class="p">:</span>
<a name="line-408"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;In BOX_LISTFOLDERS&quot;</span><span class="p">;</span>
<a name="line-409"></a> <span class="n">parseResponseListFolders</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
<a name="line-410"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-411"></a>
<a name="line-412"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">BOX_CREATEFOLDER</span><span class="p">:</span>
<a name="line-413"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;In BOX_CREATEFOLDER&quot;</span><span class="p">;</span>
<a name="line-414"></a> <span class="n">parseResponseCreateFolder</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
<a name="line-415"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-416"></a>
<a name="line-417"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">BOX_ADDPHOTO</span><span class="p">:</span>
<a name="line-418"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;In BOX_ADDPHOTO&quot;</span><span class="p">;</span>
<a name="line-419"></a> <span class="n">parseResponseAddPhoto</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
<a name="line-420"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-421"></a>
<a name="line-422"></a> <span class="k">case</span> <span class="n">Private</span><span class="o">::</span><span class="nl">BOX_USERNAME</span><span class="p">:</span>
<a name="line-423"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;In BOX_USERNAME&quot;</span><span class="p">;</span>
<a name="line-424"></a> <span class="n">parseResponseUserName</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
<a name="line-425"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-426"></a>
<a name="line-427"></a> <span class="k">default</span><span class="o">:</span>
<a name="line-428"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-429"></a> <span class="p">}</span>
<a name="line-430"></a>
<a name="line-431"></a> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">deleteLater</span><span class="p">();</span>
<a name="line-432"></a><span class="p">}</span>
<a name="line-433"></a>
<a name="line-434"></a><span class="kt">void</span> <span class="n">BOXTalker</span><span class="o">::</span><span class="n">parseResponseAddPhoto</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
<a name="line-435"></a><span class="p">{</span>
<a name="line-436"></a> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
<a name="line-437"></a> <span class="n">QJsonObject</span> <span class="n">jsonObject</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">object</span><span class="p">();</span>
<a name="line-438"></a> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="n">jsonObject</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;total_count&quot;</span><span class="p">));</span>
<a name="line-439"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-440"></a>
<a name="line-441"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">success</span><span class="p">)</span>
<a name="line-442"></a> <span class="p">{</span>
<a name="line-443"></a> <span class="n">emit</span> <span class="n">signalAddPhotoFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to upload photo&quot;</span><span class="p">));</span>
<a name="line-444"></a> <span class="p">}</span>
<a name="line-445"></a> <span class="k">else</span>
<a name="line-446"></a> <span class="p">{</span>
<a name="line-447"></a> <span class="n">emit</span> <span class="n">signalAddPhotoSucceeded</span><span class="p">();</span>
<a name="line-448"></a> <span class="p">}</span>
<a name="line-449"></a><span class="p">}</span>
<a name="line-450"></a>
<a name="line-451"></a><span class="kt">void</span> <span class="n">BOXTalker</span><span class="o">::</span><span class="n">parseResponseUserName</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
<a name="line-452"></a><span class="p">{</span>
<a name="line-453"></a> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
<a name="line-454"></a> <span class="n">QString</span> <span class="n">name</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">object</span><span class="p">()[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;name&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">();</span>
<a name="line-455"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-456"></a> <span class="n">emit</span> <span class="nf">signalSetUserName</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
<a name="line-457"></a><span class="p">}</span>
<a name="line-458"></a>
<a name="line-459"></a><span class="kt">void</span> <span class="n">BOXTalker</span><span class="o">::</span><span class="n">parseResponseListFolders</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
<a name="line-460"></a><span class="p">{</span>
<a name="line-461"></a> <span class="n">QJsonParseError</span> <span class="n">err</span><span class="p">;</span>
<a name="line-462"></a> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">err</span><span class="p">);</span>
<a name="line-463"></a>
<a name="line-464"></a> <span class="k">if</span> <span class="p">(</span><span class="n">err</span><span class="p">.</span><span class="n">error</span> <span class="o">!=</span> <span class="n">QJsonParseError</span><span class="o">::</span><span class="n">NoError</span><span class="p">)</span>
<a name="line-465"></a> <span class="p">{</span>
<a name="line-466"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-467"></a> <span class="n">emit</span> <span class="nf">signalListAlbumsFailed</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to list folders&quot;</span><span class="p">));</span>
<a name="line-468"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-469"></a> <span class="p">}</span>
<a name="line-470"></a>
<a name="line-471"></a> <span class="n">QJsonObject</span> <span class="n">jsonObject</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">object</span><span class="p">();</span>
<a name="line-472"></a> <span class="n">QJsonArray</span> <span class="n">jsonArray</span> <span class="o">=</span> <span class="n">jsonObject</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;entries&quot;</span><span class="p">)].</span><span class="n">toArray</span><span class="p">();</span>
<a name="line-473"></a>
<a name="line-474"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">foldersList</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-475"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">foldersList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">qMakePair</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;0&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;root&quot;</span><span class="p">)));</span>
<a name="line-476"></a>
<a name="line-477"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">QJsonValue</span><span class="o">&amp;</span> <span class="n">value</span><span class="p">,</span> <span class="n">jsonArray</span><span class="p">)</span>
<a name="line-478"></a> <span class="p">{</span>
<a name="line-479"></a> <span class="n">QString</span> <span class="n">folderName</span><span class="p">;</span>
<a name="line-480"></a> <span class="n">QString</span> <span class="n">type</span><span class="p">;</span>
<a name="line-481"></a> <span class="n">QString</span> <span class="n">id</span><span class="p">;</span>
<a name="line-482"></a>
<a name="line-483"></a> <span class="n">QJsonObject</span> <span class="n">obj</span> <span class="o">=</span> <span class="n">value</span><span class="p">.</span><span class="n">toObject</span><span class="p">();</span>
<a name="line-484"></a> <span class="n">type</span> <span class="o">=</span> <span class="n">obj</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;type&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">();</span>
<a name="line-485"></a>
<a name="line-486"></a> <span class="k">if</span> <span class="p">(</span><span class="n">type</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;folder&quot;</span><span class="p">))</span>
<a name="line-487"></a> <span class="p">{</span>
<a name="line-488"></a> <span class="n">folderName</span> <span class="o">=</span> <span class="n">obj</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;name&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">();</span>
<a name="line-489"></a> <span class="n">id</span> <span class="o">=</span> <span class="n">obj</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;id&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">();</span>
<a name="line-490"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">foldersList</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">qMakePair</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">folderName</span><span class="p">));</span>
<a name="line-491"></a> <span class="p">}</span>
<a name="line-492"></a> <span class="p">}</span>
<a name="line-493"></a>
<a name="line-494"></a> <span class="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-495"></a> <span class="n">emit</span> <span class="nf">signalListAlbumsDone</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">foldersList</span><span class="p">);</span>
<a name="line-496"></a><span class="p">}</span>
<a name="line-497"></a>
<a name="line-498"></a><span class="kt">void</span> <span class="n">BOXTalker</span><span class="o">::</span><span class="n">parseResponseCreateFolder</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">data</span><span class="p">)</span>
<a name="line-499"></a><span class="p">{</span>
<a name="line-500"></a><span class="hll"> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">);</span><span class='error2'>&lt;--- Shadowed declaration</span>
</span><a name="line-501"></a> <span class="n">QJsonObject</span> <span class="n">jsonObject</span> <span class="o">=</span> <span class="n">doc</span><span class="p">.</span><span class="n">object</span><span class="p">();</span>
<a name="line-502"></a> <span class="kt">bool</span> <span class="n">fail</span> <span class="o">=</span> <span class="n">jsonObject</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;error&quot;</span><span class="p">));</span>
<a name="line-503"></a>
<a name="line-504"></a> <span class="n">emit</span> <span class="nf">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-505"></a>
<a name="line-506"></a> <span class="k">if</span> <span class="p">(</span><span class="n">fail</span><span class="p">)</span>
<a name="line-507"></a> <span class="p">{</span>
<a name="line-508"></a> <span class="n">QJsonParseError</span> <span class="n">err</span><span class="p">;</span>
<a name="line-509"></a><span class="hll"> <span class="n">QJsonDocument</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">QJsonDocument</span><span class="o">::</span><span class="n">fromJson</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">err</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-510"></a> <span class="n">emit</span> <span class="nf">signalCreateFolderFailed</span><span class="p">(</span><span class="n">jsonObject</span><span class="p">[</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;error_summary&quot;</span><span class="p">)].</span><span class="n">toString</span><span class="p">());</span>
<a name="line-511"></a> <span class="p">}</span>
<a name="line-512"></a> <span class="k">else</span>
<a name="line-513"></a> <span class="p">{</span>
<a name="line-514"></a> <span class="n">emit</span> <span class="n">signalCreateFolderSucceeded</span><span class="p">();</span>
<a name="line-515"></a> <span class="p">}</span>
<a name="line-516"></a><span class="p">}</span>
<a name="line-517"></a>
<a name="line-518"></a><span class="p">}</span> <span class="c1">// namespace DigikamGenericBoxPlugin</span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/7.html b/static/reports/cppcheck/master/7.html
index b720f6907..b0167fcad 100644
--- a/static/reports/cppcheck/master/7.html
+++ b/static/reports/cppcheck/master/7.html
@@ -1,1967 +1,1967 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/dplugins/generic/webservices/flickr/flickrwindow.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/dplugins/generic/webservices/flickr/flickrwindow.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> flickrwindow.cpp</p>
<a href='7.html#line-572'> shadowVar 572</a><a href='7.html#line-585'> shadowVar 585</a>
</div>
<div id="content">
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
<a name="line-6"></a><span class="cm"> * Date : 2005-17-06</span>
<a name="line-7"></a><span class="cm"> * Description : a tool to export images to Flickr web service</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2005-2008 by Vardhman Jain &lt;vardhman at gmail dot com&gt;</span>
<a name="line-10"></a><span class="cm"> * Copyright (C) 2008-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&gt;</span>
<a name="line-11"></a><span class="cm"> * Copyright (C) 2009 by Luka Renko &lt;lure at kubuntu dot org&gt;</span>
<a name="line-12"></a><span class="cm"> *</span>
<a name="line-13"></a><span class="cm"> * This program is free software; you can redistribute it</span>
<a name="line-14"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
<a name="line-15"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
<a name="line-16"></a><span class="cm"> * either version 2, or (at your option) any later version.</span>
<a name="line-17"></a><span class="cm"> *</span>
<a name="line-18"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
<a name="line-19"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="line-20"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
<a name="line-21"></a><span class="cm"> * GNU General Public License for more details.</span>
<a name="line-22"></a><span class="cm"> *</span>
<a name="line-23"></a><span class="cm"> * ============================================================ */</span>
<a name="line-24"></a>
<a name="line-25"></a><span class="cp">#include</span> <span class="cpf">&quot;flickrwindow.h&quot;</span><span class="cp"></span>
<a name="line-26"></a>
<a name="line-27"></a><span class="c1">// Qt includes</span>
<a name="line-28"></a>
<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QPushButton&gt;</span><span class="cp"></span>
<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QProgressDialog&gt;</span><span class="cp"></span>
<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QPixmap&gt;</span><span class="cp"></span>
<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QCheckBox&gt;</span><span class="cp"></span>
<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QStringList&gt;</span><span class="cp"></span>
<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QSpinBox&gt;</span><span class="cp"></span>
<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QPointer&gt;</span><span class="cp"></span>
<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QApplication&gt;</span><span class="cp"></span>
<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&lt;QMenu&gt;</span><span class="cp"></span>
<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&lt;QMessageBox&gt;</span><span class="cp"></span>
<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&lt;QWindow&gt;</span><span class="cp"></span>
<a name="line-40"></a>
<a name="line-41"></a><span class="c1">// KDE includes</span>
<a name="line-42"></a>
<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&lt;kconfig.h&gt;</span><span class="cp"></span>
<a name="line-44"></a><span class="cp">#include</span> <span class="cpf">&lt;kwindowconfig.h&gt;</span><span class="cp"></span>
<a name="line-45"></a>
<a name="line-46"></a><span class="c1">// Local includes</span>
<a name="line-47"></a>
<a name="line-48"></a><span class="cp">#include</span> <span class="cpf">&quot;dprogresswdg.h&quot;</span><span class="cp"></span>
<a name="line-49"></a><span class="cp">#include</span> <span class="cpf">&quot;flickrtalker.h&quot;</span><span class="cp"></span>
<a name="line-50"></a><span class="cp">#include</span> <span class="cpf">&quot;flickritem.h&quot;</span><span class="cp"></span>
<a name="line-51"></a><span class="cp">#include</span> <span class="cpf">&quot;flickrlist.h&quot;</span><span class="cp"></span>
<a name="line-52"></a><span class="cp">#include</span> <span class="cpf">&quot;wsselectuserdlg.h&quot;</span><span class="cp"></span>
<a name="line-53"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
<a name="line-54"></a><span class="cp">#include</span> <span class="cpf">&quot;flickrnewalbumdlg.h&quot;</span><span class="cp"></span>
<a name="line-55"></a><span class="cp">#include</span> <span class="cpf">&quot;previewloadthread.h&quot;</span><span class="cp"></span>
<a name="line-56"></a><span class="cp">#include</span> <span class="cpf">&quot;flickrwidget_p.h&quot;</span><span class="cp"></span>
<a name="line-57"></a>
<a name="line-58"></a><span class="k">namespace</span> <span class="n">DigikamGenericFlickrPlugin</span>
<a name="line-59"></a><span class="p">{</span>
<a name="line-60"></a>
<a name="line-61"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">Private</span>
<a name="line-62"></a><span class="p">{</span>
<a name="line-63"></a><span class="k">public</span><span class="o">:</span>
<a name="line-64"></a>
<a name="line-65"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
<a name="line-66"></a> <span class="o">:</span> <span class="n">uploadCount</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
<a name="line-67"></a> <span class="n">uploadTotal</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
<a name="line-68"></a> <span class="n">newAlbumBtn</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-69"></a> <span class="n">changeUserButton</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-70"></a> <span class="n">removeAccount</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-71"></a> <span class="n">albumsListComboBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-72"></a> <span class="n">publicCheckBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-73"></a> <span class="n">familyCheckBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-74"></a> <span class="n">friendsCheckBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-75"></a> <span class="n">exportHostTagsCheckBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-76"></a> <span class="n">stripSpaceTagsCheckBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-77"></a> <span class="n">addExtraTagsCheckBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-78"></a> <span class="n">originalCheckBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-79"></a> <span class="n">resizeCheckBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-80"></a> <span class="n">dimensionSpinBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-81"></a> <span class="n">imageQualitySpinBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-82"></a> <span class="n">extendedPublicationButton</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-83"></a> <span class="n">extendedTagsButton</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-84"></a> <span class="n">contentTypeComboBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-85"></a> <span class="n">safetyLevelComboBox</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-86"></a> <span class="n">userNameDisplayLabel</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-87"></a> <span class="n">authProgressDlg</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-88"></a> <span class="n">tagsLineEdit</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-89"></a> <span class="n">widget</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-90"></a> <span class="n">talker</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-91"></a> <span class="n">imglst</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-92"></a> <span class="n">select</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-93"></a> <span class="n">albumDlg</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-94"></a> <span class="n">iface</span><span class="p">(</span><span class="k">nullptr</span><span class="p">)</span>
<a name="line-95"></a> <span class="p">{</span>
<a name="line-96"></a> <span class="p">}</span>
<a name="line-97"></a>
<a name="line-98"></a> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">uploadCount</span><span class="p">;</span>
<a name="line-99"></a> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">uploadTotal</span><span class="p">;</span>
<a name="line-100"></a>
<a name="line-101"></a> <span class="n">QString</span> <span class="n">serviceName</span><span class="p">;</span>
<a name="line-102"></a>
<a name="line-103"></a> <span class="n">QPushButton</span><span class="o">*</span> <span class="n">newAlbumBtn</span><span class="p">;</span>
<a name="line-104"></a> <span class="n">QPushButton</span><span class="o">*</span> <span class="n">changeUserButton</span><span class="p">;</span>
<a name="line-105"></a> <span class="n">QPushButton</span><span class="o">*</span> <span class="n">removeAccount</span><span class="p">;</span>
<a name="line-106"></a>
<a name="line-107"></a> <span class="n">QComboBox</span><span class="o">*</span> <span class="n">albumsListComboBox</span><span class="p">;</span>
<a name="line-108"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">publicCheckBox</span><span class="p">;</span>
<a name="line-109"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">familyCheckBox</span><span class="p">;</span>
<a name="line-110"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">friendsCheckBox</span><span class="p">;</span>
<a name="line-111"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">exportHostTagsCheckBox</span><span class="p">;</span>
<a name="line-112"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">stripSpaceTagsCheckBox</span><span class="p">;</span>
<a name="line-113"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">addExtraTagsCheckBox</span><span class="p">;</span>
<a name="line-114"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">originalCheckBox</span><span class="p">;</span>
<a name="line-115"></a> <span class="n">QCheckBox</span><span class="o">*</span> <span class="n">resizeCheckBox</span><span class="p">;</span>
<a name="line-116"></a>
<a name="line-117"></a> <span class="n">QSpinBox</span><span class="o">*</span> <span class="n">dimensionSpinBox</span><span class="p">;</span>
<a name="line-118"></a> <span class="n">QSpinBox</span><span class="o">*</span> <span class="n">imageQualitySpinBox</span><span class="p">;</span>
<a name="line-119"></a>
<a name="line-120"></a> <span class="n">QPushButton</span><span class="o">*</span> <span class="n">extendedPublicationButton</span><span class="p">;</span>
<a name="line-121"></a> <span class="n">QPushButton</span><span class="o">*</span> <span class="n">extendedTagsButton</span><span class="p">;</span>
<a name="line-122"></a> <span class="n">WSComboBoxIntermediate</span><span class="o">*</span> <span class="n">contentTypeComboBox</span><span class="p">;</span>
<a name="line-123"></a> <span class="n">WSComboBoxIntermediate</span><span class="o">*</span> <span class="n">safetyLevelComboBox</span><span class="p">;</span>
<a name="line-124"></a>
<a name="line-125"></a> <span class="n">QString</span> <span class="n">username</span><span class="p">;</span>
<a name="line-126"></a> <span class="n">QString</span> <span class="n">userId</span><span class="p">;</span>
<a name="line-127"></a> <span class="n">QString</span> <span class="n">lastSelectedAlbum</span><span class="p">;</span>
<a name="line-128"></a>
<a name="line-129"></a> <span class="n">QLabel</span><span class="o">*</span> <span class="n">userNameDisplayLabel</span><span class="p">;</span>
<a name="line-130"></a>
<a name="line-131"></a> <span class="n">QProgressDialog</span><span class="o">*</span> <span class="n">authProgressDlg</span><span class="p">;</span>
<a name="line-132"></a>
<a name="line-133"></a> <span class="n">QList</span><span class="o">&lt;</span> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="p">,</span> <span class="n">FPhotoInfo</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">uploadQueue</span><span class="p">;</span>
<a name="line-134"></a>
<a name="line-135"></a> <span class="n">QLineEdit</span><span class="o">*</span> <span class="n">tagsLineEdit</span><span class="p">;</span>
<a name="line-136"></a>
<a name="line-137"></a> <span class="n">FlickrWidget</span><span class="o">*</span> <span class="n">widget</span><span class="p">;</span>
<a name="line-138"></a> <span class="n">FlickrTalker</span><span class="o">*</span> <span class="n">talker</span><span class="p">;</span>
<a name="line-139"></a>
<a name="line-140"></a> <span class="n">FlickrList</span><span class="o">*</span> <span class="n">imglst</span><span class="p">;</span>
<a name="line-141"></a> <span class="n">WSSelectUserDlg</span><span class="o">*</span> <span class="n">select</span><span class="p">;</span>
<a name="line-142"></a> <span class="n">FlickrNewAlbumDlg</span><span class="o">*</span> <span class="n">albumDlg</span><span class="p">;</span>
<a name="line-143"></a>
<a name="line-144"></a> <span class="n">DInfoInterface</span><span class="o">*</span> <span class="n">iface</span><span class="p">;</span>
<a name="line-145"></a><span class="p">};</span>
<a name="line-146"></a>
<a name="line-147"></a><span class="n">FlickrWindow</span><span class="o">::</span><span class="n">FlickrWindow</span><span class="p">(</span><span class="n">DInfoInterface</span><span class="o">*</span> <span class="k">const</span> <span class="n">iface</span><span class="p">,</span>
<a name="line-148"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="cm">/*parent*/</span><span class="p">,</span>
<a name="line-149"></a> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">serviceName</span><span class="p">)</span>
<a name="line-150"></a> <span class="o">:</span> <span class="n">WSToolDialog</span><span class="p">(</span><span class="k">nullptr</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;%1Export Dialog&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">serviceName</span><span class="p">)),</span>
<a name="line-151"></a> <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">Private</span><span class="p">)</span>
<a name="line-152"></a><span class="p">{</span>
<a name="line-153"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span> <span class="o">=</span> <span class="n">iface</span><span class="p">;</span>
<a name="line-154"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceName</span> <span class="o">=</span> <span class="n">serviceName</span><span class="p">;</span>
<a name="line-155"></a> <span class="n">setWindowTitle</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Export to %1 Web Service&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceName</span><span class="p">));</span>
<a name="line-156"></a> <span class="n">setModal</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-157"></a>
<a name="line-158"></a> <span class="n">KConfig</span> <span class="n">config</span><span class="p">;</span>
<a name="line-159"></a> <span class="n">KConfigGroup</span> <span class="n">grp</span> <span class="o">=</span> <span class="n">config</span><span class="p">.</span><span class="n">group</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;%1Export Settings&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceName</span><span class="p">));</span>
<a name="line-160"></a>
<a name="line-161"></a> <span class="k">if</span> <span class="p">(</span><span class="n">grp</span><span class="p">.</span><span class="n">exists</span><span class="p">())</span>
<a name="line-162"></a> <span class="p">{</span>
<a name="line-163"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;%1Export Settings&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceName</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; exists, deleting it&quot;</span><span class="p">;</span>
<a name="line-164"></a> <span class="n">grp</span><span class="p">.</span><span class="n">deleteGroup</span><span class="p">();</span>
<a name="line-165"></a> <span class="p">}</span>
<a name="line-166"></a>
<a name="line-167"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">select</span> <span class="o">=</span> <span class="k">new</span> <span class="n">WSSelectUserDlg</span><span class="p">(</span><span class="k">nullptr</span><span class="p">,</span> <span class="n">serviceName</span><span class="p">);</span>
<a name="line-168"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadCount</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-169"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadTotal</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-170"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FlickrWidget</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">iface</span><span class="p">,</span> <span class="n">serviceName</span><span class="p">);</span>
<a name="line-171"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albumDlg</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FlickrNewAlbumDlg</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Flickr&quot;</span><span class="p">));</span>
<a name="line-172"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albumsListComboBox</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">getAlbumsCoB</span><span class="p">();</span>
<a name="line-173"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">newAlbumBtn</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">getNewAlbmBtn</span><span class="p">();</span>
<a name="line-174"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">originalCheckBox</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">getOriginalCheckBox</span><span class="p">();</span>
<a name="line-175"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">resizeCheckBox</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">getResizeCheckBox</span><span class="p">();</span>
<a name="line-176"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">publicCheckBox</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">publicCheckBox</span><span class="p">;</span>
<a name="line-177"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">familyCheckBox</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">familyCheckBox</span><span class="p">;</span>
<a name="line-178"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">friendsCheckBox</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">friendsCheckBox</span><span class="p">;</span>
<a name="line-179"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dimensionSpinBox</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">getDimensionSpB</span><span class="p">();</span>
<a name="line-180"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageQualitySpinBox</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">getImgQualitySpB</span><span class="p">();</span>
<a name="line-181"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">extendedTagsButton</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">extendedTagsButton</span><span class="p">;</span>
<a name="line-182"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">addExtraTagsCheckBox</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">addExtraTagsCheckBox</span><span class="p">;</span>
<a name="line-183"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">extendedPublicationButton</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">extendedPublicationButton</span><span class="p">;</span>
<a name="line-184"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">safetyLevelComboBox</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">safetyLevelComboBox</span><span class="p">;</span>
<a name="line-185"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">contentTypeComboBox</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">contentTypeComboBox</span><span class="p">;</span>
<a name="line-186"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagsLineEdit</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tagsLineEdit</span><span class="p">;</span>
<a name="line-187"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exportHostTagsCheckBox</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">exportHostTagsCheckBox</span><span class="p">;</span>
<a name="line-188"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stripSpaceTagsCheckBox</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">stripSpaceTagsCheckBox</span><span class="p">;</span>
<a name="line-189"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">changeUserButton</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">getChangeUserBtn</span><span class="p">();</span>
<a name="line-190"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">removeAccount</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">removeAccount</span><span class="p">;</span>
<a name="line-191"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">userNameDisplayLabel</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">getUserNameLabel</span><span class="p">();</span>
<a name="line-192"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imglst</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imglst</span><span class="p">;</span>
<a name="line-193"></a>
<a name="line-194"></a> <span class="n">startButton</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Start Uploading&quot;</span><span class="p">));</span>
<a name="line-195"></a> <span class="n">startButton</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">setToolTip</span><span class="p">(</span><span class="n">QString</span><span class="p">());</span>
<a name="line-196"></a>
<a name="line-197"></a> <span class="n">setMainWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="p">);</span>
<a name="line-198"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">800</span><span class="p">,</span> <span class="mi">600</span><span class="p">);</span>
<a name="line-199"></a>
<a name="line-200"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imglst</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalImageListChanged</span><span class="p">()),</span>
<a name="line-201"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotImageListChanged</span><span class="p">()));</span>
<a name="line-202"></a>
<a name="line-203"></a> <span class="c1">// --------------------------------------------------------------------------</span>
<a name="line-204"></a>
<a name="line-205"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FlickrTalker</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">serviceName</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span><span class="p">);</span>
<a name="line-206"></a>
<a name="line-207"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalError</span><span class="p">(</span><span class="n">QString</span><span class="p">)),</span>
<a name="line-208"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotError</span><span class="p">(</span><span class="n">QString</span><span class="p">)));</span>
<a name="line-209"></a>
<a name="line-210"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalBusy</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
<a name="line-211"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotBusy</span><span class="p">(</span><span class="kt">bool</span><span class="p">)));</span>
<a name="line-212"></a>
<a name="line-213"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalAddPhotoSucceeded</span><span class="p">(</span><span class="n">QString</span><span class="p">)),</span>
<a name="line-214"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddPhotoSucceeded</span><span class="p">(</span><span class="n">QString</span><span class="p">)));</span>
<a name="line-215"></a>
<a name="line-216"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalAddPhotoFailed</span><span class="p">(</span><span class="n">QString</span><span class="p">)),</span>
<a name="line-217"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddPhotoFailed</span><span class="p">(</span><span class="n">QString</span><span class="p">)));</span>
<a name="line-218"></a>
<a name="line-219"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalAddPhotoSetSucceeded</span><span class="p">()),</span>
<a name="line-220"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddPhotoSetSucceeded</span><span class="p">()));</span>
<a name="line-221"></a>
<a name="line-222"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalListPhotoSetsSucceeded</span><span class="p">()),</span>
<a name="line-223"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotPopulatePhotoSetComboBox</span><span class="p">()));</span>
<a name="line-224"></a>
<a name="line-225"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalListPhotoSetsFailed</span><span class="p">(</span><span class="n">QString</span><span class="p">)),</span>
<a name="line-226"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotListPhotoSetsFailed</span><span class="p">(</span><span class="n">QString</span><span class="p">)));</span>
<a name="line-227"></a>
<a name="line-228"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalLinkingSucceeded</span><span class="p">()),</span>
<a name="line-229"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotLinkingSucceeded</span><span class="p">()));</span>
<a name="line-230"></a>
<a name="line-231"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="p">(),</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalProgressCanceled</span><span class="p">()),</span>
<a name="line-232"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAddPhotoCancelAndClose</span><span class="p">()));</span>
<a name="line-233"></a>
<a name="line-234"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">getReloadBtn</span><span class="p">(),</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">clicked</span><span class="p">()),</span>
<a name="line-235"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotReloadPhotoSetRequest</span><span class="p">()));</span>
<a name="line-236"></a>
<a name="line-237"></a> <span class="c1">// --------------------------------------------------------------------------</span>
<a name="line-238"></a>
<a name="line-239"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">changeUserButton</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">clicked</span><span class="p">()),</span>
<a name="line-240"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotUserChangeRequest</span><span class="p">()));</span>
<a name="line-241"></a>
<a name="line-242"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">removeAccount</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">clicked</span><span class="p">()),</span>
<a name="line-243"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotRemoveAccount</span><span class="p">()));</span>
<a name="line-244"></a>
<a name="line-245"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">newAlbumBtn</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">clicked</span><span class="p">()),</span>
<a name="line-246"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotCreateNewPhotoSet</span><span class="p">()));</span>
<a name="line-247"></a>
<a name="line-248"></a> <span class="c1">// --------------------------------------------------------------------------</span>
<a name="line-249"></a>
<a name="line-250"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">authProgressDlg</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QProgressDialog</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-251"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">authProgressDlg</span><span class="o">-&gt;</span><span class="n">setModal</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-252"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">authProgressDlg</span><span class="o">-&gt;</span><span class="n">setAutoReset</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-253"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">authProgressDlg</span><span class="o">-&gt;</span><span class="n">setAutoClose</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-254"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">authProgressDlg</span><span class="o">-&gt;</span><span class="n">setMaximum</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<a name="line-255"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">authProgressDlg</span><span class="o">-&gt;</span><span class="n">reset</span><span class="p">();</span>
<a name="line-256"></a>
<a name="line-257"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">authProgressDlg</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">canceled</span><span class="p">()),</span>
<a name="line-258"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotAuthCancel</span><span class="p">()));</span>
<a name="line-259"></a>
<a name="line-260"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">m_authProgressDlg</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">authProgressDlg</span><span class="p">;</span>
<a name="line-261"></a>
<a name="line-262"></a> <span class="c1">// --------------------------------------------------------------------------</span>
<a name="line-263"></a>
<a name="line-264"></a> <span class="n">connect</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">QDialog</span><span class="o">::</span><span class="n">finished</span><span class="p">,</span>
<a name="line-265"></a> <span class="k">this</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotFinished</span><span class="p">);</span>
<a name="line-266"></a>
<a name="line-267"></a> <span class="n">connect</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">cancelClicked</span><span class="p">()),</span>
<a name="line-268"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotCancelClicked</span><span class="p">()));</span>
<a name="line-269"></a>
<a name="line-270"></a> <span class="n">connect</span><span class="p">(</span><span class="n">startButton</span><span class="p">(),</span> <span class="o">&amp;</span><span class="n">QPushButton</span><span class="o">::</span><span class="n">clicked</span><span class="p">,</span>
<a name="line-271"></a> <span class="k">this</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotUser1</span><span class="p">);</span>
<a name="line-272"></a>
<a name="line-273"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">select</span><span class="o">-&gt;</span><span class="n">reactivate</span><span class="p">();</span>
<a name="line-274"></a> <span class="n">readSettings</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">select</span><span class="o">-&gt;</span><span class="n">getUserName</span><span class="p">());</span>
<a name="line-275"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">link</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">select</span><span class="o">-&gt;</span><span class="n">getUserName</span><span class="p">());</span>
<a name="line-276"></a><span class="p">}</span>
<a name="line-277"></a>
<a name="line-278"></a><span class="n">FlickrWindow</span><span class="o">::~</span><span class="n">FlickrWindow</span><span class="p">()</span>
<a name="line-279"></a><span class="p">{</span>
<a name="line-280"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">select</span><span class="p">;</span>
<a name="line-281"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">authProgressDlg</span><span class="p">;</span>
<a name="line-282"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="p">;</span>
<a name="line-283"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="p">;</span>
<a name="line-284"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
<a name="line-285"></a><span class="p">}</span>
<a name="line-286"></a>
<a name="line-287"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">setItemsList</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="o">&gt;&amp;</span> <span class="n">urls</span><span class="p">)</span>
<a name="line-288"></a><span class="p">{</span>
<a name="line-289"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">imagesList</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">slotAddImages</span><span class="p">(</span><span class="n">urls</span><span class="p">);</span>
<a name="line-290"></a><span class="p">}</span>
<a name="line-291"></a>
<a name="line-292"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">closeEvent</span><span class="p">(</span><span class="n">QCloseEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
<a name="line-293"></a><span class="p">{</span>
<a name="line-294"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">e</span><span class="p">)</span>
<a name="line-295"></a> <span class="p">{</span>
<a name="line-296"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-297"></a> <span class="p">}</span>
<a name="line-298"></a>
<a name="line-299"></a> <span class="n">slotFinished</span><span class="p">();</span>
<a name="line-300"></a> <span class="n">e</span><span class="o">-&gt;</span><span class="n">accept</span><span class="p">();</span>
<a name="line-301"></a><span class="p">}</span>
<a name="line-302"></a>
<a name="line-303"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotFinished</span><span class="p">()</span>
<a name="line-304"></a><span class="p">{</span>
<a name="line-305"></a> <span class="n">writeSettings</span><span class="p">();</span>
<a name="line-306"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imglst</span><span class="o">-&gt;</span><span class="n">listView</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">clear</span><span class="p">();</span>
<a name="line-307"></a><span class="p">}</span>
<a name="line-308"></a>
<a name="line-309"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">setUiInProgressState</span><span class="p">(</span><span class="kt">bool</span> <span class="n">inProgress</span><span class="p">)</span>
<a name="line-310"></a><span class="p">{</span>
<a name="line-311"></a> <span class="n">setRejectButtonMode</span><span class="p">(</span><span class="n">inProgress</span> <span class="o">?</span> <span class="n">QDialogButtonBox</span><span class="o">::</span><span class="nl">Cancel</span> <span class="p">:</span> <span class="n">QDialogButtonBox</span><span class="o">::</span><span class="n">Close</span><span class="p">);</span>
<a name="line-312"></a>
<a name="line-313"></a> <span class="k">if</span> <span class="p">(</span><span class="n">inProgress</span><span class="p">)</span>
<a name="line-314"></a> <span class="p">{</span>
<a name="line-315"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">show</span><span class="p">();</span>
<a name="line-316"></a> <span class="p">}</span>
<a name="line-317"></a> <span class="k">else</span>
<a name="line-318"></a> <span class="p">{</span>
<a name="line-319"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">hide</span><span class="p">();</span>
<a name="line-320"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">progressCompleted</span><span class="p">();</span>
<a name="line-321"></a> <span class="p">}</span>
<a name="line-322"></a><span class="p">}</span>
<a name="line-323"></a>
<a name="line-324"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotCancelClicked</span><span class="p">()</span>
<a name="line-325"></a><span class="p">{</span>
<a name="line-326"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">();</span>
<a name="line-327"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadQueue</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-328"></a> <span class="n">setUiInProgressState</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-329"></a><span class="p">}</span>
<a name="line-330"></a>
<a name="line-331"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotAddPhotoCancelAndClose</span><span class="p">()</span>
<a name="line-332"></a><span class="p">{</span>
<a name="line-333"></a> <span class="n">writeSettings</span><span class="p">();</span>
<a name="line-334"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imglst</span><span class="o">-&gt;</span><span class="n">listView</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">clear</span><span class="p">();</span>
<a name="line-335"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadQueue</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-336"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">reset</span><span class="p">();</span>
<a name="line-337"></a> <span class="n">setUiInProgressState</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-338"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">();</span>
<a name="line-339"></a> <span class="n">reject</span><span class="p">();</span>
<a name="line-340"></a><span class="p">}</span>
<a name="line-341"></a>
<a name="line-342"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">reactivate</span><span class="p">()</span>
<a name="line-343"></a><span class="p">{</span>
<a name="line-344"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">userNameDisplayLabel</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">QString</span><span class="p">());</span>
<a name="line-345"></a> <span class="n">readSettings</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">select</span><span class="o">-&gt;</span><span class="n">getUserName</span><span class="p">());</span>
<a name="line-346"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">link</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">select</span><span class="o">-&gt;</span><span class="n">getUserName</span><span class="p">());</span>
<a name="line-347"></a>
<a name="line-348"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imglst</span><span class="o">-&gt;</span><span class="n">loadImagesFromCurrentSelection</span><span class="p">();</span>
<a name="line-349"></a> <span class="n">show</span><span class="p">();</span>
<a name="line-350"></a><span class="p">}</span>
<a name="line-351"></a>
<a name="line-352"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">readSettings</span><span class="p">(</span><span class="n">QString</span> <span class="n">uname</span><span class="p">)</span>
<a name="line-353"></a><span class="p">{</span>
<a name="line-354"></a> <span class="n">KConfig</span> <span class="n">config</span><span class="p">;</span>
<a name="line-355"></a> <span class="n">QString</span> <span class="n">groupName</span> <span class="o">=</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;%1%2Export Settings&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceName</span><span class="p">,</span> <span class="n">uname</span><span class="p">);</span>
<a name="line-356"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Group name is:&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">groupName</span><span class="p">;</span>
<a name="line-357"></a> <span class="n">KConfigGroup</span> <span class="n">grp</span> <span class="o">=</span> <span class="n">config</span><span class="p">.</span><span class="n">group</span><span class="p">(</span><span class="n">groupName</span><span class="p">);</span>
<a name="line-358"></a>
<a name="line-359"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exportHostTagsCheckBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">grp</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Export Host Tags&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">));</span>
<a name="line-360"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">extendedTagsButton</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">grp</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Show Extended Tag Options&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">));</span>
<a name="line-361"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">addExtraTagsCheckBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">grp</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Add Extra Tags&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">));</span>
<a name="line-362"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stripSpaceTagsCheckBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">grp</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Strip Space From Tags&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">));</span>
<a name="line-363"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">publicCheckBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">grp</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Public Sharing&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">));</span>
<a name="line-364"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">familyCheckBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">grp</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Family Sharing&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">));</span>
<a name="line-365"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">friendsCheckBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">grp</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Friends Sharing&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">));</span>
<a name="line-366"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">extendedPublicationButton</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">grp</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Show Extended Publication Options&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">));</span>
<a name="line-367"></a>
<a name="line-368"></a> <span class="kt">int</span> <span class="n">safetyLevel</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">safetyLevelComboBox</span><span class="o">-&gt;</span><span class="n">findData</span><span class="p">(</span><span class="n">QVariant</span><span class="p">(</span><span class="n">grp</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Safety Level&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">)));</span>
<a name="line-369"></a>
<a name="line-370"></a> <span class="k">if</span> <span class="p">(</span><span class="n">safetyLevel</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<a name="line-371"></a> <span class="p">{</span>
<a name="line-372"></a> <span class="n">safetyLevel</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-373"></a> <span class="p">}</span>
<a name="line-374"></a>
<a name="line-375"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">safetyLevelComboBox</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">safetyLevel</span><span class="p">);</span>
<a name="line-376"></a>
<a name="line-377"></a> <span class="kt">int</span> <span class="n">contentType</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">contentTypeComboBox</span><span class="o">-&gt;</span><span class="n">findData</span><span class="p">(</span><span class="n">QVariant</span><span class="p">(</span><span class="n">grp</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Content Type&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">)));</span>
<a name="line-378"></a>
<a name="line-379"></a> <span class="k">if</span> <span class="p">(</span><span class="n">contentType</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<a name="line-380"></a> <span class="p">{</span>
<a name="line-381"></a> <span class="n">contentType</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-382"></a> <span class="p">}</span>
<a name="line-383"></a>
<a name="line-384"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">contentTypeComboBox</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">contentType</span><span class="p">);</span>
<a name="line-385"></a>
<a name="line-386"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">originalCheckBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">grp</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Upload Original&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">));</span>
<a name="line-387"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">resizeCheckBox</span><span class="o">-&gt;</span><span class="n">setChecked</span><span class="p">(</span><span class="n">grp</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Resize&quot;</span><span class="p">,</span> <span class="nb">false</span><span class="p">));</span>
<a name="line-388"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dimensionSpinBox</span><span class="o">-&gt;</span><span class="n">setValue</span><span class="p">(</span><span class="n">grp</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Maximum Width&quot;</span><span class="p">,</span> <span class="mi">1600</span><span class="p">));</span>
<a name="line-389"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageQualitySpinBox</span><span class="o">-&gt;</span><span class="n">setValue</span><span class="p">(</span><span class="n">grp</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="s">&quot;Image Quality&quot;</span><span class="p">,</span> <span class="mi">85</span><span class="p">));</span>
<a name="line-390"></a>
<a name="line-391"></a> <span class="n">winId</span><span class="p">();</span>
<a name="line-392"></a> <span class="n">KConfigGroup</span> <span class="n">dialogGroup</span> <span class="o">=</span> <span class="n">config</span><span class="p">.</span><span class="n">group</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;%1Export Dialog&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceName</span><span class="p">));</span>
<a name="line-393"></a> <span class="n">KWindowConfig</span><span class="o">::</span><span class="n">restoreWindowSize</span><span class="p">(</span><span class="n">windowHandle</span><span class="p">(),</span> <span class="n">dialogGroup</span><span class="p">);</span>
<a name="line-394"></a> <span class="n">resize</span><span class="p">(</span><span class="n">windowHandle</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">size</span><span class="p">());</span>
<a name="line-395"></a><span class="p">}</span>
<a name="line-396"></a>
<a name="line-397"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">writeSettings</span><span class="p">()</span>
<a name="line-398"></a><span class="p">{</span>
<a name="line-399"></a> <span class="n">KConfig</span> <span class="n">config</span><span class="p">;</span>
<a name="line-400"></a> <span class="n">QString</span> <span class="n">groupName</span> <span class="o">=</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;%1%2Export Settings&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceName</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">username</span><span class="p">);</span>
<a name="line-401"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Group name is:&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">groupName</span><span class="p">;</span>
<a name="line-402"></a>
<a name="line-403"></a> <span class="k">if</span> <span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">compare</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;%1Export Settings&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceName</span><span class="p">),</span> <span class="n">groupName</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-404"></a> <span class="p">{</span>
<a name="line-405"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Not writing entry of group&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">groupName</span><span class="p">;</span>
<a name="line-406"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-407"></a> <span class="p">}</span>
<a name="line-408"></a>
<a name="line-409"></a> <span class="n">KConfigGroup</span> <span class="n">grp</span> <span class="o">=</span> <span class="n">config</span><span class="p">.</span><span class="n">group</span><span class="p">(</span><span class="n">groupName</span><span class="p">);</span>
<a name="line-410"></a>
<a name="line-411"></a> <span class="n">grp</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;username&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">username</span><span class="p">);</span>
<a name="line-412"></a> <span class="n">grp</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Export Host Tags&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">exportHostTagsCheckBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-413"></a> <span class="n">grp</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Show Extended Tag Options&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">extendedTagsButton</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-414"></a> <span class="n">grp</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Add Extra Tags&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">addExtraTagsCheckBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-415"></a> <span class="n">grp</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Strip Space From Tags&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stripSpaceTagsCheckBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-416"></a> <span class="n">grp</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Public Sharing&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">publicCheckBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-417"></a> <span class="n">grp</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Family Sharing&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">familyCheckBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-418"></a> <span class="n">grp</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Friends Sharing&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">friendsCheckBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-419"></a> <span class="n">grp</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Show Extended Publication Options&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">extendedPublicationButton</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-420"></a> <span class="kt">int</span> <span class="n">safetyLevel</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">safetyLevelComboBox</span><span class="o">-&gt;</span><span class="n">itemData</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">safetyLevelComboBox</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">()).</span><span class="n">toInt</span><span class="p">();</span>
<a name="line-421"></a> <span class="n">grp</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Safety Level&quot;</span><span class="p">,</span> <span class="n">safetyLevel</span><span class="p">);</span>
<a name="line-422"></a> <span class="kt">int</span> <span class="n">contentType</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">contentTypeComboBox</span><span class="o">-&gt;</span><span class="n">itemData</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">contentTypeComboBox</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">()).</span><span class="n">toInt</span><span class="p">();</span>
<a name="line-423"></a> <span class="n">grp</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Content Type&quot;</span><span class="p">,</span> <span class="n">contentType</span><span class="p">);</span>
<a name="line-424"></a> <span class="n">grp</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Resize&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">resizeCheckBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-425"></a> <span class="n">grp</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Upload Original&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">originalCheckBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">());</span>
<a name="line-426"></a> <span class="n">grp</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Maximum Width&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dimensionSpinBox</span><span class="o">-&gt;</span><span class="n">value</span><span class="p">());</span>
<a name="line-427"></a> <span class="n">grp</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Image Quality&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageQualitySpinBox</span><span class="o">-&gt;</span><span class="n">value</span><span class="p">());</span>
<a name="line-428"></a> <span class="n">KConfigGroup</span> <span class="n">dialogGroup</span> <span class="o">=</span> <span class="n">config</span><span class="p">.</span><span class="n">group</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;%1Export Dialog&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceName</span><span class="p">));</span>
<a name="line-429"></a> <span class="n">KWindowConfig</span><span class="o">::</span><span class="n">saveWindowSize</span><span class="p">(</span><span class="n">windowHandle</span><span class="p">(),</span> <span class="n">dialogGroup</span><span class="p">);</span>
<a name="line-430"></a> <span class="n">config</span><span class="p">.</span><span class="n">sync</span><span class="p">();</span>
<a name="line-431"></a><span class="p">}</span>
<a name="line-432"></a>
<a name="line-433"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotLinkingSucceeded</span><span class="p">()</span>
<a name="line-434"></a><span class="p">{</span>
<a name="line-435"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">username</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">getUserName</span><span class="p">();</span>
<a name="line-436"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">userId</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">getUserId</span><span class="p">();</span>
<a name="line-437"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;SlotLinkingSucceeded invoked setting user Display name to&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">username</span><span class="p">;</span>
<a name="line-438"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">userNameDisplayLabel</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;&lt;b&gt;%1&lt;/b&gt;&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">username</span><span class="p">));</span>
<a name="line-439"></a>
<a name="line-440"></a> <span class="n">KConfig</span> <span class="n">config</span><span class="p">;</span>
<a name="line-441"></a>
<a name="line-442"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">group</span><span class="p">,</span> <span class="n">config</span><span class="p">.</span><span class="n">groupList</span><span class="p">())</span>
<a name="line-443"></a> <span class="p">{</span>
<a name="line-444"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="n">group</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceName</span><span class="p">)))</span>
<a name="line-445"></a> <span class="p">{</span>
<a name="line-446"></a> <span class="k">continue</span><span class="p">;</span>
<a name="line-447"></a> <span class="p">}</span>
<a name="line-448"></a>
<a name="line-449"></a> <span class="n">KConfigGroup</span> <span class="n">grp</span> <span class="o">=</span> <span class="n">config</span><span class="p">.</span><span class="n">group</span><span class="p">(</span><span class="n">group</span><span class="p">);</span>
<a name="line-450"></a>
<a name="line-451"></a> <span class="k">if</span> <span class="p">(</span><span class="n">group</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">username</span><span class="p">))</span>
<a name="line-452"></a> <span class="p">{</span>
<a name="line-453"></a> <span class="n">readSettings</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">username</span><span class="p">);</span>
<a name="line-454"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-455"></a> <span class="p">}</span>
<a name="line-456"></a> <span class="p">}</span>
<a name="line-457"></a>
<a name="line-458"></a> <span class="n">writeSettings</span><span class="p">();</span>
<a name="line-459"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">listPhotoSets</span><span class="p">();</span>
<a name="line-460"></a><span class="p">}</span>
<a name="line-461"></a>
<a name="line-462"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotBusy</span><span class="p">(</span><span class="kt">bool</span> <span class="n">val</span><span class="p">)</span>
<a name="line-463"></a><span class="p">{</span>
<a name="line-464"></a> <span class="k">if</span> <span class="p">(</span><span class="n">val</span><span class="p">)</span>
<a name="line-465"></a> <span class="p">{</span>
<a name="line-466"></a> <span class="n">setCursor</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">WaitCursor</span><span class="p">);</span>
<a name="line-467"></a> <span class="p">}</span>
<a name="line-468"></a> <span class="k">else</span>
<a name="line-469"></a> <span class="p">{</span>
<a name="line-470"></a> <span class="n">setCursor</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">ArrowCursor</span><span class="p">);</span>
<a name="line-471"></a> <span class="p">}</span>
<a name="line-472"></a><span class="p">}</span>
<a name="line-473"></a>
<a name="line-474"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotError</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">msg</span><span class="p">)</span>
<a name="line-475"></a><span class="p">{</span>
<a name="line-476"></a> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">critical</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Error&quot;</span><span class="p">),</span> <span class="n">msg</span><span class="p">);</span>
<a name="line-477"></a><span class="p">}</span>
<a name="line-478"></a>
<a name="line-479"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotUserChangeRequest</span><span class="p">()</span>
<a name="line-480"></a><span class="p">{</span>
<a name="line-481"></a> <span class="n">writeSettings</span><span class="p">();</span>
<a name="line-482"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">userNameDisplayLabel</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">QString</span><span class="p">());</span>
<a name="line-483"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Slot Change User Request&quot;</span><span class="p">;</span>
<a name="line-484"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">select</span><span class="o">-&gt;</span><span class="n">reactivate</span><span class="p">();</span>
<a name="line-485"></a> <span class="n">readSettings</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">select</span><span class="o">-&gt;</span><span class="n">getUserName</span><span class="p">());</span>
<a name="line-486"></a>
<a name="line-487"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">link</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">select</span><span class="o">-&gt;</span><span class="n">getUserName</span><span class="p">());</span>
<a name="line-488"></a><span class="p">}</span>
<a name="line-489"></a>
<a name="line-490"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotRemoveAccount</span><span class="p">()</span>
<a name="line-491"></a><span class="p">{</span>
<a name="line-492"></a> <span class="n">KConfig</span> <span class="n">config</span><span class="p">;</span>
<a name="line-493"></a> <span class="n">QString</span> <span class="n">groupName</span> <span class="o">=</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="s">&quot;%1%2Export Settings&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceName</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">username</span><span class="p">);</span>
<a name="line-494"></a> <span class="n">KConfigGroup</span> <span class="n">grp</span> <span class="o">=</span> <span class="n">config</span><span class="p">.</span><span class="n">group</span><span class="p">(</span><span class="n">groupName</span><span class="p">);</span>
<a name="line-495"></a>
<a name="line-496"></a> <span class="k">if</span> <span class="p">(</span><span class="n">grp</span><span class="p">.</span><span class="n">exists</span><span class="p">())</span>
<a name="line-497"></a> <span class="p">{</span>
<a name="line-498"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Removing Account having group&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">groupName</span><span class="p">;</span>
<a name="line-499"></a> <span class="n">grp</span><span class="p">.</span><span class="n">deleteGroup</span><span class="p">();</span>
<a name="line-500"></a> <span class="p">}</span>
<a name="line-501"></a>
<a name="line-502"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">unLink</span><span class="p">();</span>
<a name="line-503"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">removeUserName</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceName</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">username</span><span class="p">);</span>
<a name="line-504"></a>
<a name="line-505"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">userNameDisplayLabel</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">QString</span><span class="p">());</span>
<a name="line-506"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">username</span> <span class="o">=</span> <span class="n">QString</span><span class="p">();</span>
<a name="line-507"></a><span class="p">}</span>
<a name="line-508"></a>
<a name="line-509"></a><span class="cm">/**</span>
<a name="line-510"></a><span class="cm"> * Try to guess a sensible set name from the urls given.</span>
<a name="line-511"></a><span class="cm"> * Currently, it extracs the last path name component, and returns the most</span>
<a name="line-512"></a><span class="cm"> * frequently seen. The function could be expanded to, for example, only</span>
<a name="line-513"></a><span class="cm"> * accept the path if it occurs at least 50% of the time. It could also look</span>
<a name="line-514"></a><span class="cm"> * further up in the path name.</span>
<a name="line-515"></a><span class="cm"> */</span>
<a name="line-516"></a><span class="n">QString</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">guessSensibleSetName</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="o">&gt;&amp;</span> <span class="n">urlList</span><span class="p">)</span> <span class="k">const</span>
<a name="line-517"></a><span class="p">{</span>
<a name="line-518"></a> <span class="n">QMap</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">nrFolderOccurences</span><span class="p">;</span>
<a name="line-519"></a>
<a name="line-520"></a> <span class="c1">// Extract last component of directory</span>
<a name="line-521"></a>
<a name="line-522"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">QUrl</span><span class="o">&amp;</span> <span class="n">url</span><span class="p">,</span> <span class="n">urlList</span><span class="p">)</span>
<a name="line-523"></a> <span class="p">{</span>
<a name="line-524"></a> <span class="n">QString</span> <span class="n">dir</span> <span class="o">=</span> <span class="n">url</span><span class="p">.</span><span class="n">adjusted</span><span class="p">(</span><span class="n">QUrl</span><span class="o">::</span><span class="n">RemoveFilename</span> <span class="o">|</span> <span class="n">QUrl</span><span class="o">::</span><span class="n">StripTrailingSlash</span><span class="p">).</span><span class="n">toLocalFile</span><span class="p">();</span>
<a name="line-525"></a> <span class="n">QStringList</span> <span class="n">list</span> <span class="o">=</span> <span class="n">dir</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;/&#39;</span><span class="p">));</span>
<a name="line-526"></a>
<a name="line-527"></a> <span class="k">if</span> <span class="p">(</span><span class="n">list</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-528"></a> <span class="p">{</span>
<a name="line-529"></a> <span class="k">continue</span><span class="p">;</span>
<a name="line-530"></a> <span class="p">}</span>
<a name="line-531"></a>
<a name="line-532"></a> <span class="n">nrFolderOccurences</span><span class="p">[</span><span class="n">list</span><span class="p">.</span><span class="n">last</span><span class="p">()]</span><span class="o">++</span><span class="p">;</span>
<a name="line-533"></a> <span class="p">}</span>
<a name="line-534"></a>
<a name="line-535"></a> <span class="kt">int</span> <span class="n">maxCount</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-536"></a> <span class="kt">int</span> <span class="n">totalCount</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-537"></a> <span class="n">QString</span> <span class="n">name</span><span class="p">;</span>
<a name="line-538"></a>
<a name="line-539"></a> <span class="k">for</span> <span class="p">(</span><span class="n">QMap</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;::</span><span class="n">const_iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">nrFolderOccurences</span><span class="p">.</span><span class="n">constBegin</span><span class="p">()</span> <span class="p">;</span>
<a name="line-540"></a> <span class="n">it</span> <span class="o">!=</span> <span class="n">nrFolderOccurences</span><span class="p">.</span><span class="n">constEnd</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">it</span><span class="p">)</span>
<a name="line-541"></a> <span class="p">{</span>
<a name="line-542"></a> <span class="n">totalCount</span> <span class="o">+=</span> <span class="n">it</span><span class="p">.</span><span class="n">value</span><span class="p">();</span>
<a name="line-543"></a>
<a name="line-544"></a> <span class="k">if</span> <span class="p">(</span><span class="n">it</span><span class="p">.</span><span class="n">value</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">maxCount</span><span class="p">)</span>
<a name="line-545"></a> <span class="p">{</span>
<a name="line-546"></a> <span class="n">maxCount</span> <span class="o">=</span> <span class="n">it</span><span class="p">.</span><span class="n">value</span><span class="p">();</span>
<a name="line-547"></a> <span class="n">name</span> <span class="o">=</span> <span class="n">it</span><span class="p">.</span><span class="n">key</span><span class="p">();</span>
<a name="line-548"></a> <span class="p">}</span>
<a name="line-549"></a> <span class="p">}</span>
<a name="line-550"></a>
<a name="line-551"></a> <span class="c1">// If there is only one entry or one name appears at least twice, return the suggestion</span>
<a name="line-552"></a>
<a name="line-553"></a> <span class="k">if</span> <span class="p">((</span><span class="n">totalCount</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">maxCount</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">))</span>
<a name="line-554"></a> <span class="p">{</span>
<a name="line-555"></a> <span class="k">return</span> <span class="n">name</span><span class="p">;</span>
<a name="line-556"></a> <span class="p">}</span>
<a name="line-557"></a>
<a name="line-558"></a> <span class="k">return</span> <span class="n">QString</span><span class="p">();</span>
<a name="line-559"></a><span class="p">}</span>
<a name="line-560"></a>
<a name="line-561"></a><span class="cm">/**</span>
<a name="line-562"></a><span class="cm"> * This method is called when the photo set creation button is pressed. It</span>
<a name="line-563"></a><span class="cm"> * summons a creation dialog for user input. When that is closed, it</span>
<a name="line-564"></a><span class="cm"> * creates a new photo set in the local list. The id gets the form of</span>
<a name="line-565"></a><span class="cm"> * UNDEFINED_ followed by a number, to indicate that it doesn&#39;t exist on</span>
<a name="line-566"></a><span class="cm"> * Flickr yet.</span>
<a name="line-567"></a><span class="cm"> */</span>
<a name="line-568"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotCreateNewPhotoSet</span><span class="p">()</span>
<a name="line-569"></a><span class="p">{</span>
<a name="line-570"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">albumDlg</span><span class="o">-&gt;</span><span class="n">exec</span><span class="p">()</span> <span class="o">==</span> <span class="n">QDialog</span><span class="o">::</span><span class="n">Accepted</span><span class="p">)</span>
<a name="line-571"></a> <span class="p">{</span>
<a name="line-572"></a><span class="hll"> <span class="n">FPhotoSet</span> <span class="n">fps</span><span class="p">;</span><span class='error2'>&lt;--- Shadowed declaration</span>
</span><a name="line-573"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albumDlg</span><span class="o">-&gt;</span><span class="n">getFolderProperties</span><span class="p">(</span><span class="n">fps</span><span class="p">);</span>
<a name="line-574"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;in slotCreateNewPhotoSet()&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">fps</span><span class="p">.</span><span class="n">title</span><span class="p">;</span>
<a name="line-575"></a>
<a name="line-576"></a> <span class="c1">// Lets find an UNDEFINED_ style id that isn&#39;t taken yet.s</span>
<a name="line-577"></a>
<a name="line-578"></a> <span class="n">QString</span> <span class="n">id</span><span class="p">;</span>
<a name="line-579"></a> <span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-580"></a> <span class="n">id</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;UNDEFINED_&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
<a name="line-581"></a> <span class="n">QLinkedList</span><span class="o">&lt;</span><span class="n">FPhotoSet</span><span class="o">&gt;::</span><span class="n">iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">m_photoSetsList</span><span class="o">-&gt;</span><span class="n">begin</span><span class="p">();</span>
<a name="line-582"></a>
<a name="line-583"></a> <span class="k">while</span> <span class="p">(</span><span class="n">it</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">m_photoSetsList</span><span class="o">-&gt;</span><span class="n">end</span><span class="p">())</span>
<a name="line-584"></a> <span class="p">{</span>
<a name="line-585"></a><span class="hll"> <span class="n">FPhotoSet</span> <span class="n">fps</span> <span class="o">=</span> <span class="o">*</span><span class="n">it</span><span class="p">;</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-586"></a>
<a name="line-587"></a> <span class="k">if</span> <span class="p">(</span><span class="n">fps</span><span class="p">.</span><span class="n">id</span> <span class="o">==</span> <span class="n">id</span><span class="p">)</span>
<a name="line-588"></a> <span class="p">{</span>
<a name="line-589"></a> <span class="n">id</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;UNDEFINED_&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="o">++</span><span class="n">i</span><span class="p">);</span>
<a name="line-590"></a> <span class="n">it</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">m_photoSetsList</span><span class="o">-&gt;</span><span class="n">begin</span><span class="p">();</span>
<a name="line-591"></a> <span class="p">}</span>
<a name="line-592"></a>
<a name="line-593"></a> <span class="o">++</span><span class="n">it</span><span class="p">;</span>
<a name="line-594"></a> <span class="p">}</span>
<a name="line-595"></a>
<a name="line-596"></a> <span class="n">fps</span><span class="p">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">id</span><span class="p">;</span>
<a name="line-597"></a>
<a name="line-598"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Created new photoset with temporary id&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">id</span><span class="p">;</span>
<a name="line-599"></a>
<a name="line-600"></a> <span class="c1">// Append the new photoset to the list.</span>
<a name="line-601"></a>
<a name="line-602"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">m_photoSetsList</span><span class="o">-&gt;</span><span class="n">prepend</span><span class="p">(</span><span class="n">fps</span><span class="p">);</span>
<a name="line-603"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">m_selectedPhotoSet</span> <span class="o">=</span> <span class="n">fps</span><span class="p">;</span>
<a name="line-604"></a>
<a name="line-605"></a> <span class="c1">// Re-populate the photo sets combo box.</span>
<a name="line-606"></a>
<a name="line-607"></a> <span class="n">slotPopulatePhotoSetComboBox</span><span class="p">();</span>
<a name="line-608"></a> <span class="p">}</span>
<a name="line-609"></a> <span class="k">else</span>
<a name="line-610"></a> <span class="p">{</span>
<a name="line-611"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;New Photoset creation aborted&quot;</span><span class="p">;</span>
<a name="line-612"></a> <span class="p">}</span>
<a name="line-613"></a><span class="p">}</span>
<a name="line-614"></a>
<a name="line-615"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotAuthCancel</span><span class="p">()</span>
<a name="line-616"></a><span class="p">{</span>
<a name="line-617"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">cancel</span><span class="p">();</span>
<a name="line-618"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">authProgressDlg</span><span class="o">-&gt;</span><span class="n">hide</span><span class="p">();</span>
<a name="line-619"></a><span class="p">}</span>
<a name="line-620"></a>
<a name="line-621"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotPopulatePhotoSetComboBox</span><span class="p">()</span>
<a name="line-622"></a><span class="p">{</span>
<a name="line-623"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;slotPopulatePhotoSetComboBox invoked&quot;</span><span class="p">;</span>
<a name="line-624"></a>
<a name="line-625"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span> <span class="o">&amp;&amp;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">m_photoSetsList</span><span class="p">)</span>
<a name="line-626"></a> <span class="p">{</span>
<a name="line-627"></a> <span class="n">QLinkedList</span> <span class="o">&lt;</span><span class="n">FPhotoSet</span><span class="o">&gt;*</span> <span class="k">const</span> <span class="n">list</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">m_photoSetsList</span><span class="p">;</span>
<a name="line-628"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albumsListComboBox</span><span class="o">-&gt;</span><span class="n">clear</span><span class="p">();</span>
<a name="line-629"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albumsListComboBox</span><span class="o">-&gt;</span><span class="n">insertItem</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Photostream Only&quot;</span><span class="p">));</span>
<a name="line-630"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albumsListComboBox</span><span class="o">-&gt;</span><span class="n">insertSeparator</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<a name="line-631"></a> <span class="n">QLinkedList</span><span class="o">&lt;</span><span class="n">FPhotoSet</span><span class="o">&gt;::</span><span class="n">iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">list</span><span class="o">-&gt;</span><span class="n">begin</span><span class="p">();</span>
<a name="line-632"></a> <span class="kt">int</span> <span class="n">index</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<a name="line-633"></a> <span class="kt">int</span> <span class="n">curr_index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-634"></a>
<a name="line-635"></a> <span class="k">while</span> <span class="p">(</span><span class="n">it</span> <span class="o">!=</span> <span class="n">list</span><span class="o">-&gt;</span><span class="n">end</span><span class="p">())</span>
<a name="line-636"></a> <span class="p">{</span>
<a name="line-637"></a> <span class="n">FPhotoSet</span> <span class="n">photoSet</span> <span class="o">=</span> <span class="o">*</span><span class="n">it</span><span class="p">;</span>
<a name="line-638"></a> <span class="n">QString</span> <span class="n">name</span> <span class="o">=</span> <span class="n">photoSet</span><span class="p">.</span><span class="n">title</span><span class="p">;</span>
<a name="line-639"></a>
<a name="line-640"></a> <span class="c1">// Store the id as user data, because the title is not unique.</span>
<a name="line-641"></a>
<a name="line-642"></a> <span class="n">QVariant</span> <span class="n">id</span> <span class="o">=</span> <span class="n">QVariant</span><span class="p">(</span><span class="n">photoSet</span><span class="p">.</span><span class="n">id</span><span class="p">);</span>
<a name="line-643"></a>
<a name="line-644"></a> <span class="k">if</span> <span class="p">(</span><span class="n">id</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">m_selectedPhotoSet</span><span class="p">.</span><span class="n">id</span><span class="p">)</span>
<a name="line-645"></a> <span class="p">{</span>
<a name="line-646"></a> <span class="n">curr_index</span> <span class="o">=</span> <span class="n">index</span><span class="p">;</span>
<a name="line-647"></a> <span class="p">}</span>
<a name="line-648"></a>
<a name="line-649"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albumsListComboBox</span><span class="o">-&gt;</span><span class="n">insertItem</span><span class="p">(</span><span class="n">index</span><span class="o">++</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">id</span><span class="p">);</span>
<a name="line-650"></a> <span class="o">++</span><span class="n">it</span><span class="p">;</span>
<a name="line-651"></a> <span class="p">}</span>
<a name="line-652"></a>
<a name="line-653"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albumsListComboBox</span><span class="o">-&gt;</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">curr_index</span><span class="p">);</span>
<a name="line-654"></a> <span class="p">}</span>
<a name="line-655"></a><span class="p">}</span>
<a name="line-656"></a>
<a name="line-657"></a><span class="cm">/**</span>
<a name="line-658"></a><span class="cm"> * This slot is call when &#39;Start Uploading&#39; button is pressed.</span>
<a name="line-659"></a><span class="cm"> */</span>
<a name="line-660"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotUser1</span><span class="p">()</span>
<a name="line-661"></a><span class="p">{</span>
<a name="line-662"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;SlotUploadImages invoked&quot;</span><span class="p">;</span>
<a name="line-663"></a><span class="cm">/*</span>
<a name="line-664"></a><span class="cm"> d-&gt;widget-&gt;d-&gt;tab-&gt;setCurrentIndex(FlickrWidget::FILELIST);</span>
<a name="line-665"></a><span class="cm">*/</span>
<a name="line-666"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imglst</span><span class="o">-&gt;</span><span class="n">imageUrls</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-667"></a> <span class="p">{</span>
<a name="line-668"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-669"></a> <span class="p">}</span>
<a name="line-670"></a>
<a name="line-671"></a> <span class="k">typedef</span> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="p">,</span> <span class="n">FPhotoInfo</span><span class="o">&gt;</span> <span class="n">Pair</span><span class="p">;</span>
<a name="line-672"></a>
<a name="line-673"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadQueue</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-674"></a>
<a name="line-675"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imglst</span><span class="o">-&gt;</span><span class="n">listView</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">topLevelItemCount</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-676"></a> <span class="p">{</span>
<a name="line-677"></a> <span class="n">FlickrListViewItem</span><span class="o">*</span> <span class="k">const</span> <span class="n">lvItem</span> <span class="o">=</span> <span class="k">dynamic_cast</span><span class="o">&lt;</span><span class="n">FlickrListViewItem</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imglst</span><span class="o">-&gt;</span><span class="n">listView</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">topLevelItem</span><span class="p">(</span><span class="n">i</span><span class="p">));</span>
<a name="line-678"></a>
<a name="line-679"></a> <span class="k">if</span> <span class="p">(</span><span class="n">lvItem</span><span class="p">)</span>
<a name="line-680"></a> <span class="p">{</span>
<a name="line-681"></a> <span class="n">DItemInfo</span> <span class="n">info</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span><span class="o">-&gt;</span><span class="n">itemInfo</span><span class="p">(</span><span class="n">lvItem</span><span class="o">-&gt;</span><span class="n">url</span><span class="p">()));</span>
<a name="line-682"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Adding images&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">lvItem</span><span class="o">-&gt;</span><span class="n">url</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; to the list&quot;</span><span class="p">;</span>
<a name="line-683"></a> <span class="n">FPhotoInfo</span> <span class="n">temp</span><span class="p">;</span>
<a name="line-684"></a>
<a name="line-685"></a> <span class="n">temp</span><span class="p">.</span><span class="n">title</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">title</span><span class="p">();</span>
<a name="line-686"></a> <span class="n">temp</span><span class="p">.</span><span class="n">description</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">comment</span><span class="p">();</span>
<a name="line-687"></a> <span class="n">temp</span><span class="p">.</span><span class="n">size</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">fileSize</span><span class="p">();</span>
<a name="line-688"></a> <span class="n">temp</span><span class="p">.</span><span class="n">is_public</span> <span class="o">=</span> <span class="n">lvItem</span><span class="o">-&gt;</span><span class="n">isPublic</span><span class="p">()</span> <span class="o">?</span> <span class="mi">1</span> <span class="o">:</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-689"></a> <span class="n">temp</span><span class="p">.</span><span class="n">is_family</span> <span class="o">=</span> <span class="n">lvItem</span><span class="o">-&gt;</span><span class="n">isFamily</span><span class="p">()</span> <span class="o">?</span> <span class="mi">1</span> <span class="o">:</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-690"></a> <span class="n">temp</span><span class="p">.</span><span class="n">is_friend</span> <span class="o">=</span> <span class="n">lvItem</span><span class="o">-&gt;</span><span class="n">isFriends</span><span class="p">()</span> <span class="o">?</span> <span class="mi">1</span> <span class="o">:</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-691"></a> <span class="n">temp</span><span class="p">.</span><span class="n">safety_level</span> <span class="o">=</span> <span class="n">lvItem</span><span class="o">-&gt;</span><span class="n">safetyLevel</span><span class="p">();</span>
<a name="line-692"></a> <span class="n">temp</span><span class="p">.</span><span class="n">content_type</span> <span class="o">=</span> <span class="n">lvItem</span><span class="o">-&gt;</span><span class="n">contentType</span><span class="p">();</span>
<a name="line-693"></a> <span class="n">QStringList</span> <span class="n">tagsFromDialog</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tagsLineEdit</span><span class="o">-&gt;</span><span class="n">text</span><span class="p">().</span><span class="n">split</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39;,&#39;</span><span class="p">),</span> <span class="n">QString</span><span class="o">::</span><span class="n">SkipEmptyParts</span><span class="p">);</span>
<a name="line-694"></a> <span class="n">QStringList</span> <span class="n">tagsFromList</span> <span class="o">=</span> <span class="n">lvItem</span><span class="o">-&gt;</span><span class="n">extraTags</span><span class="p">();</span>
<a name="line-695"></a>
<a name="line-696"></a> <span class="n">QStringList</span> <span class="n">allTags</span><span class="p">;</span>
<a name="line-697"></a> <span class="n">QStringList</span><span class="o">::</span><span class="n">Iterator</span> <span class="n">itTags</span><span class="p">;</span>
<a name="line-698"></a>
<a name="line-699"></a> <span class="c1">// Tags from the dialog</span>
<a name="line-700"></a>
<a name="line-701"></a> <span class="n">itTags</span> <span class="o">=</span> <span class="n">tagsFromDialog</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
<a name="line-702"></a>
<a name="line-703"></a> <span class="k">while</span> <span class="p">(</span><span class="n">itTags</span> <span class="o">!=</span> <span class="n">tagsFromDialog</span><span class="p">.</span><span class="n">end</span><span class="p">())</span>
<a name="line-704"></a> <span class="p">{</span>
<a name="line-705"></a> <span class="n">allTags</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="o">*</span><span class="n">itTags</span><span class="p">);</span>
<a name="line-706"></a> <span class="o">++</span><span class="n">itTags</span><span class="p">;</span>
<a name="line-707"></a> <span class="p">}</span>
<a name="line-708"></a>
<a name="line-709"></a> <span class="c1">// Tags from the database</span>
<a name="line-710"></a>
<a name="line-711"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">exportHostTagsCheckBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
<a name="line-712"></a> <span class="p">{</span>
<a name="line-713"></a> <span class="n">QStringList</span> <span class="n">tagsFromDatabase</span><span class="p">;</span>
<a name="line-714"></a>
<a name="line-715"></a> <span class="n">tagsFromDatabase</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">keywords</span><span class="p">();</span>
<a name="line-716"></a> <span class="n">itTags</span> <span class="o">=</span> <span class="n">tagsFromDatabase</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
<a name="line-717"></a>
<a name="line-718"></a> <span class="k">while</span> <span class="p">(</span><span class="n">itTags</span> <span class="o">!=</span> <span class="n">tagsFromDatabase</span><span class="p">.</span><span class="n">end</span><span class="p">())</span>
<a name="line-719"></a> <span class="p">{</span>
<a name="line-720"></a> <span class="n">allTags</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="o">*</span><span class="n">itTags</span><span class="p">);</span>
<a name="line-721"></a> <span class="o">++</span><span class="n">itTags</span><span class="p">;</span>
<a name="line-722"></a> <span class="p">}</span>
<a name="line-723"></a> <span class="p">}</span>
<a name="line-724"></a>
<a name="line-725"></a> <span class="c1">// Tags from the list view.</span>
<a name="line-726"></a>
<a name="line-727"></a> <span class="n">itTags</span> <span class="o">=</span> <span class="n">tagsFromList</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
<a name="line-728"></a>
<a name="line-729"></a> <span class="k">while</span> <span class="p">(</span><span class="n">itTags</span> <span class="o">!=</span> <span class="n">tagsFromList</span><span class="p">.</span><span class="n">end</span><span class="p">())</span>
<a name="line-730"></a> <span class="p">{</span>
<a name="line-731"></a> <span class="n">allTags</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="o">*</span><span class="n">itTags</span><span class="p">);</span>
<a name="line-732"></a> <span class="o">++</span><span class="n">itTags</span><span class="p">;</span>
<a name="line-733"></a> <span class="p">}</span>
<a name="line-734"></a>
<a name="line-735"></a> <span class="c1">// Remove spaces if the user doesn&#39;t like them.</span>
<a name="line-736"></a>
<a name="line-737"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">stripSpaceTagsCheckBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
<a name="line-738"></a> <span class="p">{</span>
<a name="line-739"></a> <span class="k">for</span> <span class="p">(</span><span class="n">QStringList</span><span class="o">::</span><span class="n">iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">allTags</span><span class="p">.</span><span class="n">begin</span><span class="p">()</span> <span class="p">;</span> <span class="n">it</span> <span class="o">!=</span> <span class="n">allTags</span><span class="p">.</span><span class="n">end</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">it</span><span class="p">)</span>
<a name="line-740"></a> <span class="p">{</span>
<a name="line-741"></a> <span class="o">*</span><span class="n">it</span> <span class="o">=</span> <span class="p">(</span><span class="o">*</span><span class="n">it</span><span class="p">).</span><span class="n">trimmed</span><span class="p">().</span><span class="n">remove</span><span class="p">(</span><span class="n">QLatin1Char</span><span class="p">(</span><span class="sc">&#39; &#39;</span><span class="p">));</span>
<a name="line-742"></a> <span class="p">}</span>
<a name="line-743"></a> <span class="p">}</span>
<a name="line-744"></a>
<a name="line-745"></a> <span class="c1">// Debug the tag list.</span>
<a name="line-746"></a>
<a name="line-747"></a> <span class="n">itTags</span> <span class="o">=</span> <span class="n">allTags</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
<a name="line-748"></a>
<a name="line-749"></a> <span class="k">while</span> <span class="p">(</span><span class="n">itTags</span> <span class="o">!=</span> <span class="n">allTags</span><span class="p">.</span><span class="n">end</span><span class="p">())</span>
<a name="line-750"></a> <span class="p">{</span>
<a name="line-751"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Tags list:&quot;</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="o">*</span><span class="n">itTags</span><span class="p">);</span>
<a name="line-752"></a> <span class="o">++</span><span class="n">itTags</span><span class="p">;</span>
<a name="line-753"></a> <span class="p">}</span>
<a name="line-754"></a>
<a name="line-755"></a> <span class="n">temp</span><span class="p">.</span><span class="n">tags</span> <span class="o">=</span> <span class="n">allTags</span><span class="p">;</span>
<a name="line-756"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadQueue</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">Pair</span><span class="p">(</span><span class="n">lvItem</span><span class="o">-&gt;</span><span class="n">url</span><span class="p">(),</span> <span class="n">temp</span><span class="p">));</span>
<a name="line-757"></a> <span class="p">}</span>
<a name="line-758"></a> <span class="p">}</span>
<a name="line-759"></a>
<a name="line-760"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadTotal</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadQueue</span><span class="p">.</span><span class="n">count</span><span class="p">();</span>
<a name="line-761"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadCount</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-762"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">reset</span><span class="p">();</span>
<a name="line-763"></a> <span class="n">slotAddPhotoNext</span><span class="p">();</span>
<a name="line-764"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;SlotUploadImages done&quot;</span><span class="p">;</span>
<a name="line-765"></a><span class="p">}</span>
<a name="line-766"></a>
<a name="line-767"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotAddPhotoNext</span><span class="p">()</span>
<a name="line-768"></a><span class="p">{</span>
<a name="line-769"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadQueue</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-770"></a> <span class="p">{</span>
<a name="line-771"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">reset</span><span class="p">();</span>
<a name="line-772"></a> <span class="n">setUiInProgressState</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-773"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-774"></a> <span class="p">}</span>
<a name="line-775"></a>
<a name="line-776"></a> <span class="k">typedef</span> <span class="n">QPair</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="p">,</span> <span class="n">FPhotoInfo</span><span class="o">&gt;</span> <span class="n">Pair</span><span class="p">;</span>
<a name="line-777"></a> <span class="n">Pair</span> <span class="n">pathComments</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadQueue</span><span class="p">.</span><span class="n">first</span><span class="p">();</span>
<a name="line-778"></a> <span class="n">FPhotoInfo</span> <span class="n">info</span> <span class="o">=</span> <span class="n">pathComments</span><span class="p">.</span><span class="n">second</span><span class="p">;</span>
<a name="line-779"></a>
<a name="line-780"></a> <span class="n">QString</span> <span class="n">selectedPhotoSetId</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albumsListComboBox</span><span class="o">-&gt;</span><span class="n">itemData</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">albumsListComboBox</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">()).</span><span class="n">toString</span><span class="p">();</span>
<a name="line-781"></a>
<a name="line-782"></a> <span class="k">if</span> <span class="p">(</span><span class="n">selectedPhotoSetId</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-783"></a> <span class="p">{</span>
<a name="line-784"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">m_selectedPhotoSet</span> <span class="o">=</span> <span class="n">FPhotoSet</span><span class="p">();</span>
<a name="line-785"></a> <span class="p">}</span>
<a name="line-786"></a> <span class="k">else</span>
<a name="line-787"></a> <span class="p">{</span>
<a name="line-788"></a> <span class="n">QLinkedList</span><span class="o">&lt;</span><span class="n">FPhotoSet</span><span class="o">&gt;::</span><span class="n">iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">m_photoSetsList</span><span class="o">-&gt;</span><span class="n">begin</span><span class="p">();</span>
<a name="line-789"></a>
<a name="line-790"></a> <span class="k">while</span> <span class="p">(</span><span class="n">it</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">m_photoSetsList</span><span class="o">-&gt;</span><span class="n">end</span><span class="p">())</span>
<a name="line-791"></a> <span class="p">{</span>
<a name="line-792"></a> <span class="k">if</span> <span class="p">(</span><span class="n">it</span><span class="o">-&gt;</span><span class="n">id</span> <span class="o">==</span> <span class="n">selectedPhotoSetId</span><span class="p">)</span>
<a name="line-793"></a> <span class="p">{</span>
<a name="line-794"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">m_selectedPhotoSet</span> <span class="o">=</span> <span class="o">*</span><span class="n">it</span><span class="p">;</span>
<a name="line-795"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-796"></a> <span class="p">}</span>
<a name="line-797"></a>
<a name="line-798"></a> <span class="o">++</span><span class="n">it</span><span class="p">;</span>
<a name="line-799"></a> <span class="p">}</span>
<a name="line-800"></a> <span class="p">}</span>
<a name="line-801"></a>
<a name="line-802"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_WEBSERVICES_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Max allowed file size is:&quot;</span>
<a name="line-803"></a> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">getMaxAllowedFileSize</span><span class="p">().</span><span class="n">toLongLong</span><span class="p">()</span>
<a name="line-804"></a> <span class="o">&lt;&lt;</span> <span class="s">&quot;File Size is&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">.</span><span class="n">size</span><span class="p">;</span>
<a name="line-805"></a>
<a name="line-806"></a> <span class="kt">bool</span> <span class="n">res</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">addPhoto</span><span class="p">(</span><span class="n">pathComments</span><span class="p">.</span><span class="n">first</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">(),</span> <span class="c1">//the file path</span>
<a name="line-807"></a> <span class="n">info</span><span class="p">,</span>
<a name="line-808"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">originalCheckBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">(),</span>
<a name="line-809"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">resizeCheckBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">(),</span>
<a name="line-810"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dimensionSpinBox</span><span class="o">-&gt;</span><span class="n">value</span><span class="p">(),</span>
<a name="line-811"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageQualitySpinBox</span><span class="o">-&gt;</span><span class="n">value</span><span class="p">());</span>
<a name="line-812"></a>
<a name="line-813"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">res</span><span class="p">)</span>
<a name="line-814"></a> <span class="p">{</span>
<a name="line-815"></a> <span class="n">slotAddPhotoFailed</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
<a name="line-816"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-817"></a> <span class="p">}</span>
<a name="line-818"></a>
<a name="line-819"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">isHidden</span><span class="p">())</span>
<a name="line-820"></a> <span class="p">{</span>
<a name="line-821"></a> <span class="n">setUiInProgressState</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-822"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">progressScheduled</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Flickr Export&quot;</span><span class="p">),</span> <span class="nb">true</span><span class="p">,</span> <span class="nb">true</span><span class="p">);</span>
<a name="line-823"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">progressThumbnailChanged</span><span class="p">(</span>
<a name="line-824"></a> <span class="n">QIcon</span><span class="o">::</span><span class="n">fromTheme</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;dk-flickr&quot;</span><span class="p">)).</span><span class="n">pixmap</span><span class="p">(</span><span class="mi">22</span><span class="p">,</span> <span class="mi">22</span><span class="p">));</span>
<a name="line-825"></a> <span class="p">}</span>
<a name="line-826"></a><span class="p">}</span>
<a name="line-827"></a>
<a name="line-828"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotAddPhotoSucceeded</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">photoId</span><span class="p">)</span>
<a name="line-829"></a><span class="p">{</span>
<a name="line-830"></a> <span class="n">QUrl</span> <span class="n">photoUrl</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadQueue</span><span class="p">.</span><span class="n">first</span><span class="p">().</span><span class="n">first</span><span class="p">;</span>
<a name="line-831"></a>
<a name="line-832"></a> <span class="c1">// Set location for uploaded photo</span>
<a name="line-833"></a>
<a name="line-834"></a> <span class="n">DItemInfo</span> <span class="nf">info</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span><span class="o">-&gt;</span><span class="n">itemInfo</span><span class="p">(</span><span class="n">photoUrl</span><span class="p">));</span>
<a name="line-835"></a>
<a name="line-836"></a> <span class="k">if</span> <span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">hasGeolocationInfo</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">photoId</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-837"></a> <span class="p">{</span>
<a name="line-838"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">setGeoLocation</span><span class="p">(</span><span class="n">photoId</span><span class="p">,</span>
<a name="line-839"></a> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">latitude</span><span class="p">()),</span>
<a name="line-840"></a> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">longitude</span><span class="p">()));</span>
<a name="line-841"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-842"></a> <span class="p">}</span>
<a name="line-843"></a>
<a name="line-844"></a> <span class="c1">// Remove photo uploaded from the list</span>
<a name="line-845"></a>
<a name="line-846"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imglst</span><span class="o">-&gt;</span><span class="n">removeItemByUrl</span><span class="p">(</span><span class="n">photoUrl</span><span class="p">);</span>
<a name="line-847"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadQueue</span><span class="p">.</span><span class="n">removeFirst</span><span class="p">();</span>
<a name="line-848"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadCount</span><span class="o">++</span><span class="p">;</span>
<a name="line-849"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">setMaximum</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadTotal</span><span class="p">);</span>
<a name="line-850"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">setValue</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadCount</span><span class="p">);</span>
<a name="line-851"></a> <span class="n">slotAddPhotoNext</span><span class="p">();</span>
<a name="line-852"></a><span class="p">}</span>
<a name="line-853"></a>
<a name="line-854"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotListPhotoSetsFailed</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">msg</span><span class="p">)</span>
<a name="line-855"></a><span class="p">{</span>
<a name="line-856"></a> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">critical</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Error&quot;</span><span class="p">),</span>
<a name="line-857"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to Fetch Photoset information from %1. %2</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
<a name="line-858"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceName</span><span class="p">,</span> <span class="n">msg</span><span class="p">));</span>
<a name="line-859"></a><span class="p">}</span>
<a name="line-860"></a>
<a name="line-861"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotAddPhotoFailed</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">msg</span><span class="p">)</span>
<a name="line-862"></a><span class="p">{</span>
<a name="line-863"></a> <span class="n">QPointer</span><span class="o">&lt;</span><span class="n">QMessageBox</span><span class="o">&gt;</span> <span class="n">warn</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QMessageBox</span><span class="p">(</span><span class="n">QMessageBox</span><span class="o">::</span><span class="n">Warning</span><span class="p">,</span>
<a name="line-864"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Warning&quot;</span><span class="p">),</span>
<a name="line-865"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to upload photo into %1. %2</span><span class="se">\n</span><span class="s">Do you want to continue?&quot;</span><span class="p">,</span>
<a name="line-866"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">serviceName</span><span class="p">,</span> <span class="n">msg</span><span class="p">),</span>
<a name="line-867"></a> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">Yes</span> <span class="o">|</span> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">No</span><span class="p">);</span>
<a name="line-868"></a>
<a name="line-869"></a> <span class="p">(</span><span class="n">warn</span><span class="o">-&gt;</span><span class="n">button</span><span class="p">(</span><span class="n">QMessageBox</span><span class="o">::</span><span class="n">Yes</span><span class="p">))</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Continue&quot;</span><span class="p">));</span>
<a name="line-870"></a> <span class="p">(</span><span class="n">warn</span><span class="o">-&gt;</span><span class="n">button</span><span class="p">(</span><span class="n">QMessageBox</span><span class="o">::</span><span class="n">No</span><span class="p">))</span><span class="o">-&gt;</span><span class="n">setText</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Cancel&quot;</span><span class="p">));</span>
<a name="line-871"></a>
<a name="line-872"></a> <span class="k">if</span> <span class="p">(</span><span class="n">warn</span><span class="o">-&gt;</span><span class="n">exec</span><span class="p">()</span> <span class="o">!=</span> <span class="n">QMessageBox</span><span class="o">::</span><span class="n">Yes</span><span class="p">)</span>
<a name="line-873"></a> <span class="p">{</span>
<a name="line-874"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadQueue</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-875"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">reset</span><span class="p">();</span>
<a name="line-876"></a> <span class="n">setUiInProgressState</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-877"></a> <span class="p">}</span>
<a name="line-878"></a> <span class="k">else</span>
<a name="line-879"></a> <span class="p">{</span>
<a name="line-880"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadQueue</span><span class="p">.</span><span class="n">removeFirst</span><span class="p">();</span>
<a name="line-881"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadTotal</span><span class="o">--</span><span class="p">;</span>
<a name="line-882"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">setMaximum</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadTotal</span><span class="p">);</span>
<a name="line-883"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">progressBar</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">setValue</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">uploadCount</span><span class="p">);</span>
<a name="line-884"></a> <span class="n">slotAddPhotoNext</span><span class="p">();</span>
<a name="line-885"></a> <span class="p">}</span>
<a name="line-886"></a>
<a name="line-887"></a> <span class="k">delete</span> <span class="n">warn</span><span class="p">;</span>
<a name="line-888"></a><span class="p">}</span>
<a name="line-889"></a>
<a name="line-890"></a><span class="cm">/**</span>
<a name="line-891"></a><span class="cm"> * Method called when a photo set has been successfully created on Flickr.</span>
<a name="line-892"></a><span class="cm"> * It functions to restart the normal flow after a photo set has been created</span>
<a name="line-893"></a><span class="cm"> * on Flickr.</span>
<a name="line-894"></a><span class="cm"> */</span>
<a name="line-895"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotAddPhotoSetSucceeded</span><span class="p">()</span>
<a name="line-896"></a><span class="p">{</span>
<a name="line-897"></a> <span class="n">slotPopulatePhotoSetComboBox</span><span class="p">();</span>
<a name="line-898"></a> <span class="n">slotAddPhotoSucceeded</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">));</span>
<a name="line-899"></a><span class="p">}</span>
<a name="line-900"></a>
<a name="line-901"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotImageListChanged</span><span class="p">()</span>
<a name="line-902"></a><span class="p">{</span>
<a name="line-903"></a> <span class="n">startButton</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">setEnabled</span><span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">widget</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imglst</span><span class="o">-&gt;</span><span class="n">imageUrls</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">()));</span>
<a name="line-904"></a><span class="p">}</span>
<a name="line-905"></a>
<a name="line-906"></a><span class="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotReloadPhotoSetRequest</span><span class="p">()</span>
<a name="line-907"></a><span class="p">{</span>
<a name="line-908"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">talker</span><span class="o">-&gt;</span><span class="n">listPhotoSets</span><span class="p">();</span>
<a name="line-909"></a><span class="p">}</span>
<a name="line-910"></a>
<a name="line-911"></a><span class="p">}</span> <span class="c1">// namespace DigikamGenericFlickrPlugin</span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/8.html b/static/reports/cppcheck/master/8.html
index afaf25e35..981bede5c 100644
--- a/static/reports/cppcheck/master/8.html
+++ b/static/reports/cppcheck/master/8.html
@@ -1,1037 +1,1037 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/dplugins/generic/webservices/mediawiki/backend/mediawiki_edit.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/dplugins/generic/webservices/mediawiki/backend/mediawiki_edit.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> mediawiki_edit.cpp</p>
<a href='8.html#line-297'> shadowVar 297</a><a href='8.html#line-310'> shadowVar 310</a>
</div>
<div id="content">
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
<a name="line-6"></a><span class="cm"> * Date : 2011-03-22</span>
<a name="line-7"></a><span class="cm"> * Description : a Iface C++ interface</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2011-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&gt;</span>
<a name="line-10"></a><span class="cm"> * Copyright (C) 2011 by Alexandre Mendes &lt;alex dot mendes1988 at gmail dot com&gt;</span>
<a name="line-11"></a><span class="cm"> * Copyright (C) 2011 by Hormiere Guillaume &lt;hormiere dot guillaume at gmail dot com&gt;</span>
<a name="line-12"></a><span class="cm"> * Copyright (C) 2011 by Manuel Campomanes &lt;campomanes dot manuel at gmail dot com&gt;</span>
<a name="line-13"></a><span class="cm"> *</span>
<a name="line-14"></a><span class="cm"> * This program is free software; you can redistribute it</span>
<a name="line-15"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
<a name="line-16"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
<a name="line-17"></a><span class="cm"> * either version 2, or (at your option) any later version.</span>
<a name="line-18"></a><span class="cm"> *</span>
<a name="line-19"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
<a name="line-20"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="line-21"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
<a name="line-22"></a><span class="cm"> * GNU General Public License for more details.</span>
<a name="line-23"></a><span class="cm"> *</span>
<a name="line-24"></a><span class="cm"> * ============================================================ */</span>
<a name="line-25"></a>
<a name="line-26"></a><span class="cp">#include</span> <span class="cpf">&quot;mediawiki_edit.h&quot;</span><span class="cp"></span>
<a name="line-27"></a>
<a name="line-28"></a><span class="c1">// Qt includes</span>
<a name="line-29"></a>
<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QTimer&gt;</span><span class="cp"></span>
<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QUrl&gt;</span><span class="cp"></span>
<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QUrlQuery&gt;</span><span class="cp"></span>
<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QXmlStreamReader&gt;</span><span class="cp"></span>
<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QCryptographicHash&gt;</span><span class="cp"></span>
<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QStringList&gt;</span><span class="cp"></span>
<a name="line-36"></a>
<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&lt;QNetworkCookie&gt;</span><span class="cp"></span>
<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&lt;QNetworkCookieJar&gt;</span><span class="cp"></span>
<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&lt;QNetworkReply&gt;</span><span class="cp"></span>
<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&lt;QNetworkRequest&gt;</span><span class="cp"></span>
<a name="line-41"></a>
<a name="line-42"></a><span class="c1">// Local includes</span>
<a name="line-43"></a>
<a name="line-44"></a><span class="cp">#include</span> <span class="cpf">&quot;mediawiki_iface.h&quot;</span><span class="cp"></span>
<a name="line-45"></a><span class="cp">#include</span> <span class="cpf">&quot;mediawiki_queryinfo.h&quot;</span><span class="cp"></span>
<a name="line-46"></a><span class="cp">#include</span> <span class="cpf">&quot;mediawiki_job_p.h&quot;</span><span class="cp"></span>
<a name="line-47"></a>
<a name="line-48"></a><span class="k">namespace</span> <span class="n">MediaWiki</span>
<a name="line-49"></a><span class="p">{</span>
<a name="line-50"></a>
<a name="line-51"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">Result</span>
<a name="line-52"></a><span class="p">{</span>
<a name="line-53"></a><span class="k">public</span><span class="o">:</span>
<a name="line-54"></a>
<a name="line-55"></a> <span class="k">explicit</span> <span class="n">Result</span><span class="p">()</span>
<a name="line-56"></a> <span class="p">{</span>
<a name="line-57"></a> <span class="n">m_captchaId</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<a name="line-58"></a> <span class="p">}</span>
<a name="line-59"></a>
<a name="line-60"></a> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">m_captchaId</span><span class="p">;</span>
<a name="line-61"></a> <span class="n">QVariant</span> <span class="n">m_captchaQuestion</span><span class="p">;</span>
<a name="line-62"></a> <span class="n">QString</span> <span class="n">m_captchaAnswer</span><span class="p">;</span>
<a name="line-63"></a><span class="p">};</span>
<a name="line-64"></a>
<a name="line-65"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="nl">EditPrivate</span> <span class="p">:</span> <span class="k">public</span> <span class="n">JobPrivate</span>
<a name="line-66"></a><span class="p">{</span>
<a name="line-67"></a><span class="k">public</span><span class="o">:</span>
<a name="line-68"></a>
<a name="line-69"></a> <span class="k">explicit</span> <span class="n">EditPrivate</span><span class="p">(</span><span class="n">Iface</span><span class="o">&amp;</span> <span class="n">MediaWiki</span><span class="p">)</span>
<a name="line-70"></a> <span class="o">:</span> <span class="n">JobPrivate</span><span class="p">(</span><span class="n">MediaWiki</span><span class="p">)</span>
<a name="line-71"></a> <span class="p">{</span>
<a name="line-72"></a> <span class="p">}</span>
<a name="line-73"></a>
<a name="line-74"></a> <span class="k">static</span> <span class="kt">int</span> <span class="n">error</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">error</span><span class="p">)</span>
<a name="line-75"></a> <span class="p">{</span>
<a name="line-76"></a> <span class="n">QString</span> <span class="n">temp</span> <span class="o">=</span> <span class="n">error</span><span class="p">;</span>
<a name="line-77"></a> <span class="kt">int</span> <span class="n">ret</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-78"></a> <span class="n">QStringList</span> <span class="n">list</span><span class="p">;</span>
<a name="line-79"></a> <span class="n">list</span> <span class="o">&lt;&lt;</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;notext&quot;</span><span class="p">)</span>
<a name="line-80"></a> <span class="o">&lt;&lt;</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;invalidsection&quot;</span><span class="p">)</span>
<a name="line-81"></a> <span class="o">&lt;&lt;</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;protectedtitle&quot;</span><span class="p">)</span>
<a name="line-82"></a> <span class="o">&lt;&lt;</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;cantcreate&quot;</span><span class="p">)</span>
<a name="line-83"></a> <span class="o">&lt;&lt;</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;cantcreateanon&quot;</span><span class="p">)</span>
<a name="line-84"></a> <span class="o">&lt;&lt;</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;articleexists&quot;</span><span class="p">)</span>
<a name="line-85"></a> <span class="o">&lt;&lt;</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;noimageredirectanon&quot;</span><span class="p">)</span>
<a name="line-86"></a> <span class="o">&lt;&lt;</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;noimageredirect&quot;</span><span class="p">)</span>
<a name="line-87"></a> <span class="o">&lt;&lt;</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;spamdetected&quot;</span><span class="p">)</span>
<a name="line-88"></a> <span class="o">&lt;&lt;</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;filtered&quot;</span><span class="p">)</span>
<a name="line-89"></a> <span class="o">&lt;&lt;</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;contenttoobig&quot;</span><span class="p">)</span>
<a name="line-90"></a> <span class="o">&lt;&lt;</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;noeditanon&quot;</span><span class="p">)</span>
<a name="line-91"></a> <span class="o">&lt;&lt;</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;noedit&quot;</span><span class="p">)</span>
<a name="line-92"></a> <span class="o">&lt;&lt;</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;pagedeleted&quot;</span><span class="p">)</span>
<a name="line-93"></a> <span class="o">&lt;&lt;</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;emptypage&quot;</span><span class="p">)</span>
<a name="line-94"></a> <span class="o">&lt;&lt;</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;emptynewsection&quot;</span><span class="p">)</span>
<a name="line-95"></a> <span class="o">&lt;&lt;</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;editconflict&quot;</span><span class="p">)</span>
<a name="line-96"></a> <span class="o">&lt;&lt;</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;revwrongpage&quot;</span><span class="p">)</span>
<a name="line-97"></a> <span class="o">&lt;&lt;</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;undofailure&quot;</span><span class="p">);</span>
<a name="line-98"></a>
<a name="line-99"></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">list</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">temp</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="n">QChar</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="sc">&#39;-&#39;</span><span class="p">)));</span>
<a name="line-100"></a>
<a name="line-101"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ret</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<a name="line-102"></a> <span class="p">{</span>
<a name="line-103"></a> <span class="n">ret</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-104"></a> <span class="p">}</span>
<a name="line-105"></a>
<a name="line-106"></a> <span class="k">return</span> <span class="n">ret</span> <span class="o">+</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">Edit</span><span class="o">::</span><span class="n">TextMissing</span> <span class="p">;</span>
<a name="line-107"></a> <span class="p">}</span>
<a name="line-108"></a>
<a name="line-109"></a> <span class="n">QUrl</span> <span class="n">baseUrl</span><span class="p">;</span>
<a name="line-110"></a> <span class="n">QMap</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">requestParameter</span><span class="p">;</span>
<a name="line-111"></a> <span class="n">Result</span> <span class="n">result</span><span class="p">;</span>
<a name="line-112"></a><span class="p">};</span>
<a name="line-113"></a>
<a name="line-114"></a><span class="n">Edit</span><span class="o">::</span><span class="n">Edit</span><span class="p">(</span><span class="n">Iface</span><span class="o">&amp;</span> <span class="n">media</span><span class="p">,</span> <span class="n">QObject</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span><span class="p">)</span>
<a name="line-115"></a> <span class="o">:</span> <span class="n">Job</span><span class="p">(</span><span class="o">*</span><span class="k">new</span> <span class="n">EditPrivate</span><span class="p">(</span><span class="n">media</span><span class="p">),</span> <span class="n">parent</span><span class="p">)</span>
<a name="line-116"></a><span class="p">{</span>
<a name="line-117"></a><span class="p">}</span>
<a name="line-118"></a>
<a name="line-119"></a><span class="kt">void</span> <span class="n">Edit</span><span class="o">::</span><span class="n">setUndoAfter</span><span class="p">(</span><span class="kt">int</span> <span class="n">undoafter</span><span class="p">)</span>
<a name="line-120"></a><span class="p">{</span>
<a name="line-121"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">Edit</span><span class="p">);</span>
<a name="line-122"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;undoafter&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">undoafter</span><span class="p">);</span>
<a name="line-123"></a><span class="p">}</span>
<a name="line-124"></a>
<a name="line-125"></a><span class="kt">void</span> <span class="n">Edit</span><span class="o">::</span><span class="n">setUndo</span><span class="p">(</span><span class="kt">int</span> <span class="n">undo</span><span class="p">)</span>
<a name="line-126"></a><span class="p">{</span>
<a name="line-127"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">Edit</span><span class="p">);</span>
<a name="line-128"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;undo&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">undo</span><span class="p">);</span>
<a name="line-129"></a><span class="p">}</span>
<a name="line-130"></a>
<a name="line-131"></a><span class="kt">void</span> <span class="n">Edit</span><span class="o">::</span><span class="n">setPrependText</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">prependText</span><span class="p">)</span>
<a name="line-132"></a><span class="p">{</span>
<a name="line-133"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">Edit</span><span class="p">);</span>
<a name="line-134"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;prependtext&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">prependText</span><span class="p">;</span>
<a name="line-135"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;md5&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">QString</span><span class="p">();</span>
<a name="line-136"></a><span class="p">}</span>
<a name="line-137"></a>
<a name="line-138"></a><span class="kt">void</span> <span class="n">Edit</span><span class="o">::</span><span class="n">setAppendText</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">appendText</span><span class="p">)</span>
<a name="line-139"></a><span class="p">{</span>
<a name="line-140"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">Edit</span><span class="p">);</span>
<a name="line-141"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;appendtext&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">appendText</span><span class="p">;</span>
<a name="line-142"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;md5&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">QString</span><span class="p">();</span>
<a name="line-143"></a><span class="p">}</span>
<a name="line-144"></a>
<a name="line-145"></a><span class="kt">void</span> <span class="n">Edit</span><span class="o">::</span><span class="n">setPageName</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">pageName</span><span class="p">)</span>
<a name="line-146"></a><span class="p">{</span>
<a name="line-147"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">Edit</span><span class="p">);</span>
<a name="line-148"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;title&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">pageName</span><span class="p">;</span>
<a name="line-149"></a><span class="p">}</span>
<a name="line-150"></a>
<a name="line-151"></a><span class="kt">void</span> <span class="n">Edit</span><span class="o">::</span><span class="n">setToken</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">token</span><span class="p">)</span>
<a name="line-152"></a><span class="p">{</span>
<a name="line-153"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">Edit</span><span class="p">);</span>
<a name="line-154"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;token&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">token</span><span class="p">;</span>
<a name="line-155"></a><span class="p">}</span>
<a name="line-156"></a>
<a name="line-157"></a><span class="kt">void</span> <span class="n">Edit</span><span class="o">::</span><span class="n">setBaseTimestamp</span><span class="p">(</span><span class="k">const</span> <span class="n">QDateTime</span><span class="o">&amp;</span> <span class="n">baseTimestamp</span><span class="p">)</span>
<a name="line-158"></a><span class="p">{</span>
<a name="line-159"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">Edit</span><span class="p">);</span>
<a name="line-160"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;basetimestamp&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">baseTimestamp</span><span class="p">.</span><span class="n">toString</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;yyyy-MM-ddThh:mm:ssZ&quot;</span><span class="p">));</span>
<a name="line-161"></a><span class="p">}</span>
<a name="line-162"></a>
<a name="line-163"></a><span class="kt">void</span> <span class="n">Edit</span><span class="o">::</span><span class="n">setStartTimestamp</span><span class="p">(</span><span class="k">const</span> <span class="n">QDateTime</span><span class="o">&amp;</span> <span class="n">startTimestamp</span><span class="p">)</span>
<a name="line-164"></a><span class="p">{</span>
<a name="line-165"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">Edit</span><span class="p">);</span>
<a name="line-166"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;starttimestamp&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">startTimestamp</span><span class="p">.</span><span class="n">toString</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;yyyy-MM-ddThh:mm:ssZ&quot;</span><span class="p">));</span>
<a name="line-167"></a><span class="p">}</span>
<a name="line-168"></a>
<a name="line-169"></a><span class="kt">void</span> <span class="n">Edit</span><span class="o">::</span><span class="n">setText</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">text</span><span class="p">)</span>
<a name="line-170"></a><span class="p">{</span>
<a name="line-171"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">Edit</span><span class="p">);</span>
<a name="line-172"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;text&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">text</span><span class="p">;</span>
<a name="line-173"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;md5&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">QString</span><span class="p">();</span>
<a name="line-174"></a><span class="p">}</span>
<a name="line-175"></a>
<a name="line-176"></a><span class="kt">void</span> <span class="n">Edit</span><span class="o">::</span><span class="n">setRecreate</span><span class="p">(</span><span class="kt">bool</span> <span class="n">recreate</span><span class="p">)</span>
<a name="line-177"></a><span class="p">{</span>
<a name="line-178"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">Edit</span><span class="p">);</span>
<a name="line-179"></a>
<a name="line-180"></a> <span class="k">if</span> <span class="p">(</span><span class="n">recreate</span><span class="p">)</span>
<a name="line-181"></a> <span class="p">{</span>
<a name="line-182"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;recreate&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;on&quot;</span><span class="p">);</span>
<a name="line-183"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;md5&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">QString</span><span class="p">();</span>
<a name="line-184"></a> <span class="p">}</span>
<a name="line-185"></a><span class="p">}</span>
<a name="line-186"></a>
<a name="line-187"></a><span class="kt">void</span> <span class="n">Edit</span><span class="o">::</span><span class="n">setCreateonly</span><span class="p">(</span><span class="kt">bool</span> <span class="n">createonly</span><span class="p">)</span>
<a name="line-188"></a><span class="p">{</span>
<a name="line-189"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">Edit</span><span class="p">);</span>
<a name="line-190"></a>
<a name="line-191"></a> <span class="k">if</span> <span class="p">(</span><span class="n">createonly</span><span class="p">)</span>
<a name="line-192"></a> <span class="p">{</span>
<a name="line-193"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;createonly&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;on&quot;</span><span class="p">);</span>
<a name="line-194"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;md5&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">QString</span><span class="p">();</span>
<a name="line-195"></a> <span class="p">}</span>
<a name="line-196"></a><span class="p">}</span>
<a name="line-197"></a>
<a name="line-198"></a><span class="kt">void</span> <span class="n">Edit</span><span class="o">::</span><span class="n">setNocreate</span><span class="p">(</span><span class="kt">bool</span> <span class="n">norecreate</span><span class="p">)</span>
<a name="line-199"></a><span class="p">{</span>
<a name="line-200"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">Edit</span><span class="p">);</span>
<a name="line-201"></a>
<a name="line-202"></a> <span class="k">if</span> <span class="p">(</span><span class="n">norecreate</span><span class="p">)</span>
<a name="line-203"></a> <span class="p">{</span>
<a name="line-204"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;nocreate&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;on&quot;</span><span class="p">);</span>
<a name="line-205"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;md5&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">QString</span><span class="p">();</span>
<a name="line-206"></a> <span class="p">}</span>
<a name="line-207"></a><span class="p">}</span>
<a name="line-208"></a>
<a name="line-209"></a><span class="kt">void</span> <span class="n">Edit</span><span class="o">::</span><span class="n">setMinor</span><span class="p">(</span><span class="kt">bool</span> <span class="n">minor</span><span class="p">)</span>
<a name="line-210"></a><span class="p">{</span>
<a name="line-211"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">Edit</span><span class="p">);</span>
<a name="line-212"></a>
<a name="line-213"></a> <span class="k">if</span> <span class="p">(</span><span class="n">minor</span><span class="p">)</span>
<a name="line-214"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;minor&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;on&quot;</span><span class="p">);</span>
<a name="line-215"></a> <span class="k">else</span>
<a name="line-216"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;notminor&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;on&quot;</span><span class="p">);</span>
<a name="line-217"></a><span class="p">}</span>
<a name="line-218"></a>
<a name="line-219"></a><span class="kt">void</span> <span class="n">Edit</span><span class="o">::</span><span class="n">setSection</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">section</span><span class="p">)</span>
<a name="line-220"></a><span class="p">{</span>
<a name="line-221"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">Edit</span><span class="p">);</span>
<a name="line-222"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;section&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">section</span><span class="p">;</span>
<a name="line-223"></a><span class="p">}</span>
<a name="line-224"></a>
<a name="line-225"></a><span class="kt">void</span> <span class="n">Edit</span><span class="o">::</span><span class="n">setSummary</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">summary</span><span class="p">)</span>
<a name="line-226"></a><span class="p">{</span>
<a name="line-227"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">Edit</span><span class="p">);</span>
<a name="line-228"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;summary&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">summary</span><span class="p">;</span>
<a name="line-229"></a><span class="p">}</span>
<a name="line-230"></a>
<a name="line-231"></a><span class="kt">void</span> <span class="n">Edit</span><span class="o">::</span><span class="n">setWatchList</span><span class="p">(</span><span class="n">Edit</span><span class="o">::</span><span class="n">Watchlist</span> <span class="n">watchlist</span><span class="p">)</span>
<a name="line-232"></a><span class="p">{</span>
<a name="line-233"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">Edit</span><span class="p">);</span>
<a name="line-234"></a>
<a name="line-235"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">watchlist</span><span class="p">)</span>
<a name="line-236"></a> <span class="p">{</span>
<a name="line-237"></a> <span class="k">case</span> <span class="n">Edit</span><span class="o">::</span><span class="nl">watch</span><span class="p">:</span>
<a name="line-238"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;watchlist&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">QString</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;watch&quot;</span><span class="p">));</span>
<a name="line-239"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-240"></a> <span class="k">case</span> <span class="n">Edit</span><span class="o">::</span><span class="nl">unwatch</span><span class="p">:</span>
<a name="line-241"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;watchlist&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">QString</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;unwatch&quot;</span><span class="p">));</span>
<a name="line-242"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-243"></a> <span class="k">case</span> <span class="n">Edit</span><span class="o">::</span><span class="nl">nochange</span><span class="p">:</span>
<a name="line-244"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;watchlist&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">QString</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;nochange&quot;</span><span class="p">));</span>
<a name="line-245"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-246"></a> <span class="k">case</span> <span class="n">Edit</span><span class="o">::</span><span class="nl">preferences</span><span class="p">:</span>
<a name="line-247"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;watchlist&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">QString</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;preferences&quot;</span><span class="p">));</span>
<a name="line-248"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-249"></a> <span class="p">}</span>
<a name="line-250"></a><span class="p">}</span>
<a name="line-251"></a>
<a name="line-252"></a><span class="n">Edit</span><span class="o">::~</span><span class="n">Edit</span><span class="p">()</span>
<a name="line-253"></a><span class="p">{</span>
<a name="line-254"></a><span class="p">}</span>
<a name="line-255"></a>
<a name="line-256"></a><span class="kt">void</span> <span class="n">Edit</span><span class="o">::</span><span class="n">start</span><span class="p">()</span>
<a name="line-257"></a><span class="p">{</span>
<a name="line-258"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">Edit</span><span class="p">);</span>
<a name="line-259"></a> <span class="n">QueryInfo</span><span class="o">*</span> <span class="k">const</span> <span class="n">info</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QueryInfo</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">MediaWiki</span><span class="p">,</span><span class="k">this</span><span class="p">);</span>
<a name="line-260"></a> <span class="n">info</span><span class="o">-&gt;</span><span class="n">setPageName</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;title&quot;</span><span class="p">)]);</span>
<a name="line-261"></a> <span class="n">info</span><span class="o">-&gt;</span><span class="n">setToken</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;edit&quot;</span><span class="p">));</span>
<a name="line-262"></a>
<a name="line-263"></a> <span class="n">connect</span><span class="p">(</span><span class="n">info</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">page</span><span class="p">(</span><span class="n">Page</span><span class="p">)),</span>
<a name="line-264"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">doWorkSendRequest</span><span class="p">(</span><span class="n">Page</span><span class="p">)));</span>
<a name="line-265"></a>
<a name="line-266"></a> <span class="n">info</span><span class="o">-&gt;</span><span class="n">start</span><span class="p">();</span>
<a name="line-267"></a><span class="p">}</span>
<a name="line-268"></a>
<a name="line-269"></a><span class="kt">void</span> <span class="n">Edit</span><span class="o">::</span><span class="n">doWorkSendRequest</span><span class="p">(</span><span class="n">Page</span> <span class="n">page</span><span class="p">)</span>
<a name="line-270"></a><span class="p">{</span>
<a name="line-271"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">Edit</span><span class="p">);</span>
<a name="line-272"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;token&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">page</span><span class="p">.</span><span class="n">pageEditToken</span><span class="p">();</span>
<a name="line-273"></a> <span class="c1">// Set the url</span>
<a name="line-274"></a> <span class="n">QUrl</span> <span class="n">url</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">MediaWiki</span><span class="p">.</span><span class="n">url</span><span class="p">();</span>
<a name="line-275"></a> <span class="n">QUrlQuery</span> <span class="n">query</span><span class="p">;</span>
<a name="line-276"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;format&quot;</span><span class="p">),</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;xml&quot;</span><span class="p">));</span>
<a name="line-277"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;action&quot;</span><span class="p">),</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;edit&quot;</span><span class="p">));</span>
<a name="line-278"></a>
<a name="line-279"></a> <span class="c1">// Add params</span>
<a name="line-280"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;md5&quot;</span><span class="p">)))</span>
<a name="line-281"></a> <span class="p">{</span>
<a name="line-282"></a> <span class="n">QString</span> <span class="n">text</span><span class="p">;</span>
<a name="line-283"></a>
<a name="line-284"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;prependtext&quot;</span><span class="p">)))</span>
<a name="line-285"></a> <span class="n">text</span> <span class="o">+=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;prependtext&quot;</span><span class="p">)];</span>
<a name="line-286"></a>
<a name="line-287"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;appendtext&quot;</span><span class="p">)))</span>
<a name="line-288"></a> <span class="n">text</span> <span class="o">+=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;appendtext&quot;</span><span class="p">)];</span>
<a name="line-289"></a>
<a name="line-290"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;text&quot;</span><span class="p">)))</span>
<a name="line-291"></a> <span class="n">text</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;text&quot;</span><span class="p">)];</span>
<a name="line-292"></a>
<a name="line-293"></a> <span class="n">QByteArray</span> <span class="n">hash</span> <span class="o">=</span> <span class="n">QCryptographicHash</span><span class="o">::</span><span class="n">hash</span><span class="p">(</span><span class="n">text</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">(),</span><span class="n">QCryptographicHash</span><span class="o">::</span><span class="n">Md5</span><span class="p">);</span>
<a name="line-294"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;md5&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromLatin1</span><span class="p">(</span><span class="n">hash</span><span class="p">.</span><span class="n">toHex</span><span class="p">());</span>
<a name="line-295"></a> <span class="p">}</span>
<a name="line-296"></a>
<a name="line-297"></a><span class="hll"> <span class="n">QMapIterator</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">i</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">);</span><span class='error2'>&lt;--- Shadowed declaration</span>
</span><a name="line-298"></a>
<a name="line-299"></a> <span class="k">while</span> <span class="p">(</span><span class="n">i</span><span class="p">.</span><span class="n">hasNext</span><span class="p">())</span>
<a name="line-300"></a> <span class="p">{</span>
<a name="line-301"></a> <span class="n">i</span><span class="p">.</span><span class="n">next</span><span class="p">();</span>
<a name="line-302"></a>
<a name="line-303"></a> <span class="k">if</span> <span class="p">(</span><span class="n">i</span><span class="p">.</span><span class="n">key</span><span class="p">()</span> <span class="o">!=</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;token&quot;</span><span class="p">))</span>
<a name="line-304"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">i</span><span class="p">.</span><span class="n">key</span><span class="p">(),</span><span class="n">i</span><span class="p">.</span><span class="n">value</span><span class="p">());</span>
<a name="line-305"></a> <span class="p">}</span>
<a name="line-306"></a>
<a name="line-307"></a> <span class="n">QByteArray</span> <span class="n">cookie</span><span class="p">;</span>
<a name="line-308"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QNetworkCookie</span><span class="o">&gt;</span> <span class="n">MediaWikiCookies</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">manager</span><span class="o">-&gt;</span><span class="n">cookieJar</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">cookiesForUrl</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">MediaWiki</span><span class="p">.</span><span class="n">url</span><span class="p">());</span>
<a name="line-309"></a>
<a name="line-310"></a><span class="hll"> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">MediaWikiCookies</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-311"></a> <span class="p">{</span>
<a name="line-312"></a> <span class="n">cookie</span> <span class="o">+=</span> <span class="n">MediaWikiCookies</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">toRawForm</span><span class="p">(</span><span class="n">QNetworkCookie</span><span class="o">::</span><span class="n">NameAndValueOnly</span><span class="p">);</span>
<a name="line-313"></a> <span class="n">cookie</span> <span class="o">+=</span> <span class="sc">&#39;;&#39;</span><span class="p">;</span>
<a name="line-314"></a> <span class="p">}</span>
<a name="line-315"></a>
<a name="line-316"></a> <span class="c1">// Add the token</span>
<a name="line-317"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;token&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;token&quot;</span><span class="p">)]);</span>
<a name="line-318"></a> <span class="n">url</span><span class="p">.</span><span class="n">setQuery</span><span class="p">(</span><span class="n">query</span><span class="p">);</span>
<a name="line-319"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">baseUrl</span> <span class="o">=</span> <span class="n">url</span><span class="p">;</span>
<a name="line-320"></a>
<a name="line-321"></a> <span class="c1">// Set the request</span>
<a name="line-322"></a> <span class="n">QNetworkRequest</span> <span class="nf">request</span><span class="p">(</span> <span class="n">url</span> <span class="p">);</span>
<a name="line-323"></a> <span class="n">request</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;User-Agent&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">MediaWiki</span><span class="p">.</span><span class="n">userAgent</span><span class="p">().</span><span class="n">toUtf8</span><span class="p">());</span>
<a name="line-324"></a> <span class="n">request</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;application/x-www-form-urlencoded&quot;</span><span class="p">));</span>
<a name="line-325"></a> <span class="n">request</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Cookie&quot;</span><span class="p">,</span> <span class="n">cookie</span><span class="p">);</span>
<a name="line-326"></a>
<a name="line-327"></a> <span class="n">setPercent</span><span class="p">(</span><span class="mi">25</span><span class="p">);</span> <span class="c1">// Request ready.</span>
<a name="line-328"></a>
<a name="line-329"></a> <span class="c1">// Send the request</span>
<a name="line-330"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">manager</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span> <span class="n">request</span><span class="p">,</span> <span class="n">url</span><span class="p">.</span><span class="n">toString</span><span class="p">().</span><span class="n">toUtf8</span><span class="p">()</span> <span class="p">);</span>
<a name="line-331"></a> <span class="n">connectReply</span><span class="p">();</span>
<a name="line-332"></a>
<a name="line-333"></a> <span class="n">connect</span><span class="p">(</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">finished</span><span class="p">()),</span>
<a name="line-334"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">finishedEdit</span><span class="p">())</span> <span class="p">);</span>
<a name="line-335"></a>
<a name="line-336"></a> <span class="n">setPercent</span><span class="p">(</span><span class="mi">50</span><span class="p">);</span> <span class="c1">// Request sent.</span>
<a name="line-337"></a><span class="p">}</span>
<a name="line-338"></a>
<a name="line-339"></a><span class="kt">void</span> <span class="n">Edit</span><span class="o">::</span><span class="n">finishedEdit</span><span class="p">()</span>
<a name="line-340"></a><span class="p">{</span>
<a name="line-341"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">Edit</span><span class="p">);</span>
<a name="line-342"></a>
<a name="line-343"></a> <span class="n">disconnect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">finished</span><span class="p">()),</span>
<a name="line-344"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">finishedEdit</span><span class="p">()));</span>
<a name="line-345"></a>
<a name="line-346"></a> <span class="n">setPercent</span><span class="p">(</span><span class="mi">75</span><span class="p">);</span> <span class="c1">// Response received.</span>
<a name="line-347"></a>
<a name="line-348"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">error</span><span class="p">()</span> <span class="o">!=</span> <span class="n">QNetworkReply</span><span class="o">::</span><span class="n">NoError</span><span class="p">)</span>
<a name="line-349"></a> <span class="p">{</span>
<a name="line-350"></a> <span class="k">this</span><span class="o">-&gt;</span><span class="n">setError</span><span class="p">(</span><span class="k">this</span><span class="o">-&gt;</span><span class="n">NetworkError</span><span class="p">);</span>
<a name="line-351"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">close</span><span class="p">();</span>
<a name="line-352"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">deleteLater</span><span class="p">();</span>
<a name="line-353"></a> <span class="n">emitResult</span><span class="p">();</span>
<a name="line-354"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-355"></a> <span class="p">}</span>
<a name="line-356"></a>
<a name="line-357"></a> <span class="n">QXmlStreamReader</span> <span class="n">reader</span><span class="p">(</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="p">);</span>
<a name="line-358"></a>
<a name="line-359"></a> <span class="k">while</span> <span class="p">(</span><span class="o">!</span><span class="n">reader</span><span class="p">.</span><span class="n">atEnd</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">reader</span><span class="p">.</span><span class="n">hasError</span><span class="p">())</span>
<a name="line-360"></a> <span class="p">{</span>
<a name="line-361"></a> <span class="n">QXmlStreamReader</span><span class="o">::</span><span class="n">TokenType</span> <span class="n">token</span> <span class="o">=</span> <span class="n">reader</span><span class="p">.</span><span class="n">readNext</span><span class="p">();</span>
<a name="line-362"></a>
<a name="line-363"></a> <span class="k">if</span> <span class="p">(</span><span class="n">token</span> <span class="o">==</span> <span class="n">QXmlStreamReader</span><span class="o">::</span><span class="n">StartElement</span><span class="p">)</span>
<a name="line-364"></a> <span class="p">{</span>
<a name="line-365"></a> <span class="n">QXmlStreamAttributes</span> <span class="n">attrs</span> <span class="o">=</span> <span class="n">reader</span><span class="p">.</span><span class="n">attributes</span><span class="p">();</span>
<a name="line-366"></a>
<a name="line-367"></a> <span class="k">if</span> <span class="p">(</span><span class="n">reader</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">==</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;edit&quot;</span><span class="p">))</span>
<a name="line-368"></a> <span class="p">{</span>
<a name="line-369"></a> <span class="k">if</span> <span class="p">(</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;result&quot;</span><span class="p">)</span> <span class="p">).</span><span class="n">toString</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Success&quot;</span><span class="p">))</span>
<a name="line-370"></a> <span class="p">{</span>
<a name="line-371"></a> <span class="n">setPercent</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span> <span class="c1">// Response parsed successfully.</span>
<a name="line-372"></a> <span class="k">this</span><span class="o">-&gt;</span><span class="n">setError</span><span class="p">(</span><span class="n">KJob</span><span class="o">::</span><span class="n">NoError</span><span class="p">);</span>
<a name="line-373"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">close</span><span class="p">();</span>
<a name="line-374"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">deleteLater</span><span class="p">();</span>
<a name="line-375"></a> <span class="n">emitResult</span><span class="p">();</span>
<a name="line-376"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-377"></a> <span class="p">}</span>
<a name="line-378"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;result&quot;</span><span class="p">)</span> <span class="p">).</span><span class="n">toString</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Failure&quot;</span><span class="p">))</span>
<a name="line-379"></a> <span class="p">{</span>
<a name="line-380"></a> <span class="k">this</span><span class="o">-&gt;</span><span class="n">setError</span><span class="p">(</span><span class="n">KJob</span><span class="o">::</span><span class="n">NoError</span><span class="p">);</span>
<a name="line-381"></a> <span class="n">reader</span><span class="p">.</span><span class="n">readNext</span><span class="p">();</span>
<a name="line-382"></a> <span class="n">attrs</span> <span class="o">=</span> <span class="n">reader</span><span class="p">.</span><span class="n">attributes</span><span class="p">();</span>
<a name="line-383"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">result</span><span class="p">.</span><span class="n">m_captchaId</span> <span class="o">=</span> <span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;id&quot;</span><span class="p">)</span> <span class="p">).</span><span class="n">toString</span><span class="p">().</span><span class="n">toUInt</span><span class="p">();</span>
<a name="line-384"></a>
<a name="line-385"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;question&quot;</span><span class="p">)</span> <span class="p">).</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-386"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">result</span><span class="p">.</span><span class="n">m_captchaQuestion</span> <span class="o">=</span> <span class="n">QVariant</span><span class="p">(</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;question&quot;</span><span class="p">)</span> <span class="p">).</span><span class="n">toString</span><span class="p">())</span> <span class="p">;</span>
<a name="line-387"></a> <span class="k">else</span> <span class="nf">if</span> <span class="p">(</span><span class="o">!</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;url&quot;</span><span class="p">)</span> <span class="p">).</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-388"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">result</span><span class="p">.</span><span class="n">m_captchaQuestion</span> <span class="o">=</span> <span class="n">QVariant</span><span class="p">(</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;url&quot;</span><span class="p">)</span> <span class="p">).</span><span class="n">toString</span><span class="p">())</span> <span class="p">;</span>
<a name="line-389"></a> <span class="p">}</span>
<a name="line-390"></a> <span class="p">}</span>
<a name="line-391"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">reader</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">==</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;error&quot;</span><span class="p">))</span>
<a name="line-392"></a> <span class="p">{</span>
<a name="line-393"></a> <span class="k">this</span><span class="o">-&gt;</span><span class="n">setError</span><span class="p">(</span><span class="n">EditPrivate</span><span class="o">::</span><span class="n">error</span><span class="p">(</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;code&quot;</span><span class="p">)</span> <span class="p">).</span><span class="n">toString</span><span class="p">()));</span>
<a name="line-394"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">close</span><span class="p">();</span>
<a name="line-395"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">deleteLater</span><span class="p">();</span>
<a name="line-396"></a> <span class="n">emitResult</span><span class="p">();</span>
<a name="line-397"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-398"></a> <span class="p">}</span>
<a name="line-399"></a> <span class="p">}</span>
<a name="line-400"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">token</span> <span class="o">==</span> <span class="n">QXmlStreamReader</span><span class="o">::</span><span class="n">Invalid</span> <span class="o">&amp;&amp;</span> <span class="n">reader</span><span class="p">.</span><span class="n">error</span><span class="p">()</span> <span class="o">!=</span> <span class="n">QXmlStreamReader</span><span class="o">::</span><span class="n">PrematureEndOfDocumentError</span><span class="p">)</span>
<a name="line-401"></a> <span class="p">{</span>
<a name="line-402"></a> <span class="k">this</span><span class="o">-&gt;</span><span class="n">setError</span><span class="p">(</span><span class="k">this</span><span class="o">-&gt;</span><span class="n">XmlError</span><span class="p">);</span>
<a name="line-403"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">close</span><span class="p">();</span>
<a name="line-404"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">deleteLater</span><span class="p">();</span>
<a name="line-405"></a> <span class="n">emitResult</span><span class="p">();</span>
<a name="line-406"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-407"></a> <span class="p">}</span>
<a name="line-408"></a> <span class="p">}</span>
<a name="line-409"></a>
<a name="line-410"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">close</span><span class="p">();</span>
<a name="line-411"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">deleteLater</span><span class="p">();</span>
<a name="line-412"></a> <span class="n">emit</span> <span class="nf">resultCaptcha</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">result</span><span class="p">.</span><span class="n">m_captchaQuestion</span><span class="p">);</span>
<a name="line-413"></a><span class="p">}</span>
<a name="line-414"></a>
<a name="line-415"></a><span class="kt">void</span> <span class="n">Edit</span><span class="o">::</span><span class="n">finishedCaptcha</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">captcha</span><span class="p">)</span>
<a name="line-416"></a><span class="p">{</span>
<a name="line-417"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">Edit</span><span class="p">);</span>
<a name="line-418"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">result</span><span class="p">.</span><span class="n">m_captchaAnswer</span> <span class="o">=</span> <span class="n">captcha</span><span class="p">;</span>
<a name="line-419"></a> <span class="n">QUrl</span> <span class="n">url</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">baseUrl</span><span class="p">;</span>
<a name="line-420"></a> <span class="n">QUrlQuery</span> <span class="n">query</span><span class="p">;</span>
<a name="line-421"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;CaptchaId&quot;</span><span class="p">),</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">result</span><span class="p">.</span><span class="n">m_captchaId</span><span class="p">));</span>
<a name="line-422"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;CaptchaAnswer&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">result</span><span class="p">.</span><span class="n">m_captchaAnswer</span><span class="p">);</span>
<a name="line-423"></a> <span class="n">url</span><span class="p">.</span><span class="n">setQuery</span><span class="p">(</span><span class="n">query</span><span class="p">);</span>
<a name="line-424"></a> <span class="n">QString</span> <span class="n">data</span> <span class="o">=</span> <span class="n">url</span><span class="p">.</span><span class="n">toString</span><span class="p">();</span>
<a name="line-425"></a> <span class="n">QByteArray</span> <span class="n">cookie</span><span class="p">;</span>
<a name="line-426"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QNetworkCookie</span><span class="o">&gt;</span> <span class="n">MediaWikiCookies</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">manager</span><span class="o">-&gt;</span><span class="n">cookieJar</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">cookiesForUrl</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">MediaWiki</span><span class="p">.</span><span class="n">url</span><span class="p">());</span>
<a name="line-427"></a>
<a name="line-428"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">MediaWikiCookies</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-429"></a> <span class="p">{</span>
<a name="line-430"></a> <span class="n">cookie</span> <span class="o">+=</span> <span class="n">MediaWikiCookies</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">toRawForm</span><span class="p">(</span><span class="n">QNetworkCookie</span><span class="o">::</span><span class="n">NameAndValueOnly</span><span class="p">);</span>
<a name="line-431"></a> <span class="n">cookie</span> <span class="o">+=</span> <span class="sc">&#39;;&#39;</span><span class="p">;</span>
<a name="line-432"></a> <span class="p">}</span>
<a name="line-433"></a>
<a name="line-434"></a> <span class="c1">// Set the request</span>
<a name="line-435"></a> <span class="n">QNetworkRequest</span> <span class="n">request</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
<a name="line-436"></a> <span class="n">request</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;User-Agent&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">MediaWiki</span><span class="p">.</span><span class="n">userAgent</span><span class="p">().</span><span class="n">toUtf8</span><span class="p">());</span>
<a name="line-437"></a> <span class="n">request</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;Cookie&quot;</span><span class="p">,</span> <span class="n">cookie</span><span class="p">);</span>
<a name="line-438"></a> <span class="n">request</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">QNetworkRequest</span><span class="o">::</span><span class="n">ContentTypeHeader</span><span class="p">,</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;application/x-www-form-urlencoded&quot;</span><span class="p">));</span>
<a name="line-439"></a> <span class="c1">// Send the request</span>
<a name="line-440"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">manager</span><span class="o">-&gt;</span><span class="n">post</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">data</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">());</span>
<a name="line-441"></a>
<a name="line-442"></a> <span class="n">connect</span><span class="p">(</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">finished</span><span class="p">()),</span>
<a name="line-443"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">finishedEdit</span><span class="p">())</span> <span class="p">);</span>
<a name="line-444"></a><span class="p">}</span>
<a name="line-445"></a>
<a name="line-446"></a><span class="p">}</span> <span class="c1">// namespace MediaWiki</span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/9.html b/static/reports/cppcheck/master/9.html
index 5e0165e29..e03c6cb7b 100644
--- a/static/reports/cppcheck/master/9.html
+++ b/static/reports/cppcheck/master/9.html
@@ -1,617 +1,617 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .o { color: #333333 } /* Operator */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #557799 } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
.highlight .s { background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #0000CC } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #007700 } /* Name.Tag */
.highlight .nv { color: #996633 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #0044DD } /* Literal.String.Char */
.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
.highlight .vm { color: #996633 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: ../../core/dplugins/generic/webservices/mediawiki/backend/mediawiki_queryinfo.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: ../../core/dplugins/generic/webservices/mediawiki/backend/mediawiki_queryinfo.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> mediawiki_queryinfo.cpp</p>
<a href='9.html#line-111'> shadowVar 111</a><a href='9.html#line-126'> shadowVar 126</a>
</div>
<div id="content">
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
<a name="line-2"></a><span class="cm"> *</span>
<a name="line-3"></a><span class="cm"> * This file is a part of digiKam project</span>
<a name="line-4"></a><span class="cm"> * https://www.digikam.org</span>
<a name="line-5"></a><span class="cm"> *</span>
<a name="line-6"></a><span class="cm"> * Date : 2011-03-22</span>
<a name="line-7"></a><span class="cm"> * Description : a Iface C++ interface</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2011-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&gt;</span>
<a name="line-10"></a><span class="cm"> * Copyright (C) 2011 by Alexandre Mendes &lt;alex dot mendes1988 at gmail dot com&gt;</span>
<a name="line-11"></a><span class="cm"> *</span>
<a name="line-12"></a><span class="cm"> * This program is free software; you can redistribute it</span>
<a name="line-13"></a><span class="cm"> * and/or modify it under the terms of the GNU General</span>
<a name="line-14"></a><span class="cm"> * Public License as published by the Free Software Foundation;</span>
<a name="line-15"></a><span class="cm"> * either version 2, or (at your option) any later version.</span>
<a name="line-16"></a><span class="cm"> *</span>
<a name="line-17"></a><span class="cm"> * This program is distributed in the hope that it will be useful,</span>
<a name="line-18"></a><span class="cm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="line-19"></a><span class="cm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
<a name="line-20"></a><span class="cm"> * GNU General Public License for more details.</span>
<a name="line-21"></a><span class="cm"> *</span>
<a name="line-22"></a><span class="cm"> * ============================================================ */</span>
<a name="line-23"></a>
<a name="line-24"></a><span class="cp">#include</span> <span class="cpf">&quot;mediawiki_queryinfo.h&quot;</span><span class="cp"></span>
<a name="line-25"></a>
<a name="line-26"></a><span class="c1">// Qt includes</span>
<a name="line-27"></a>
<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;QDateTime&gt;</span><span class="cp"></span>
<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QTimer&gt;</span><span class="cp"></span>
<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QUrl&gt;</span><span class="cp"></span>
<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QUrlQuery&gt;</span><span class="cp"></span>
<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QXmlStreamReader&gt;</span><span class="cp"></span>
<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QRegExp&gt;</span><span class="cp"></span>
<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QNetworkAccessManager&gt;</span><span class="cp"></span>
<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QNetworkCookie&gt;</span><span class="cp"></span>
<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QNetworkReply&gt;</span><span class="cp"></span>
<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&lt;QNetworkRequest&gt;</span><span class="cp"></span>
<a name="line-38"></a>
<a name="line-39"></a><span class="c1">// Local includes</span>
<a name="line-40"></a>
<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&quot;mediawiki_iface.h&quot;</span><span class="cp"></span>
<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&quot;mediawiki_job_p.h&quot;</span><span class="cp"></span>
<a name="line-43"></a>
<a name="line-44"></a><span class="k">namespace</span> <span class="n">MediaWiki</span>
<a name="line-45"></a><span class="p">{</span>
<a name="line-46"></a>
<a name="line-47"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="nl">QueryInfoPrivate</span> <span class="p">:</span> <span class="k">public</span> <span class="n">JobPrivate</span>
<a name="line-48"></a><span class="p">{</span>
<a name="line-49"></a><span class="k">public</span><span class="o">:</span>
<a name="line-50"></a>
<a name="line-51"></a> <span class="k">explicit</span> <span class="n">QueryInfoPrivate</span><span class="p">(</span><span class="n">Iface</span><span class="o">&amp;</span> <span class="n">MediaWiki</span><span class="p">)</span>
<a name="line-52"></a> <span class="o">:</span> <span class="n">JobPrivate</span><span class="p">(</span><span class="n">MediaWiki</span><span class="p">)</span>
<a name="line-53"></a> <span class="p">{</span>
<a name="line-54"></a> <span class="p">}</span>
<a name="line-55"></a>
<a name="line-56"></a> <span class="n">QVector</span><span class="o">&lt;</span><span class="n">Protection</span><span class="o">&gt;</span> <span class="n">protections</span><span class="p">;</span>
<a name="line-57"></a> <span class="n">QMap</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">requestParameter</span><span class="p">;</span>
<a name="line-58"></a> <span class="n">Page</span> <span class="n">page</span><span class="p">;</span>
<a name="line-59"></a><span class="p">};</span>
<a name="line-60"></a>
<a name="line-61"></a><span class="n">QueryInfo</span><span class="o">::</span><span class="n">QueryInfo</span><span class="p">(</span><span class="n">Iface</span><span class="o">&amp;</span> <span class="n">MediaWiki</span><span class="p">,</span> <span class="n">QObject</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span><span class="p">)</span>
<a name="line-62"></a> <span class="o">:</span> <span class="n">Job</span><span class="p">(</span><span class="o">*</span><span class="k">new</span> <span class="n">QueryInfoPrivate</span><span class="p">(</span><span class="n">MediaWiki</span><span class="p">),</span> <span class="n">parent</span><span class="p">)</span>
<a name="line-63"></a><span class="p">{</span>
<a name="line-64"></a><span class="p">}</span>
<a name="line-65"></a>
<a name="line-66"></a><span class="n">QueryInfo</span><span class="o">::~</span><span class="n">QueryInfo</span><span class="p">()</span>
<a name="line-67"></a><span class="p">{</span>
<a name="line-68"></a><span class="p">}</span>
<a name="line-69"></a>
<a name="line-70"></a><span class="kt">void</span> <span class="n">QueryInfo</span><span class="o">::</span><span class="n">setPageName</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">title</span><span class="p">)</span>
<a name="line-71"></a><span class="p">{</span>
<a name="line-72"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">QueryInfo</span><span class="p">);</span>
<a name="line-73"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;titles&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">title</span><span class="p">;</span>
<a name="line-74"></a><span class="p">}</span>
<a name="line-75"></a>
<a name="line-76"></a><span class="kt">void</span> <span class="n">QueryInfo</span><span class="o">::</span><span class="n">setToken</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">token</span><span class="p">)</span>
<a name="line-77"></a><span class="p">{</span>
<a name="line-78"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">QueryInfo</span><span class="p">);</span>
<a name="line-79"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;intoken&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">token</span><span class="p">;</span>
<a name="line-80"></a><span class="p">}</span>
<a name="line-81"></a>
<a name="line-82"></a><span class="kt">void</span> <span class="n">QueryInfo</span><span class="o">::</span><span class="n">setPageId</span><span class="p">(</span><span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">id</span><span class="p">)</span>
<a name="line-83"></a><span class="p">{</span>
<a name="line-84"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">QueryInfo</span><span class="p">);</span>
<a name="line-85"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;pageids&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">id</span><span class="p">);</span>
<a name="line-86"></a><span class="p">}</span>
<a name="line-87"></a>
<a name="line-88"></a><span class="kt">void</span> <span class="n">QueryInfo</span><span class="o">::</span><span class="n">setRevisionId</span><span class="p">(</span><span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">id</span><span class="p">)</span>
<a name="line-89"></a><span class="p">{</span>
<a name="line-90"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">QueryInfo</span><span class="p">);</span>
<a name="line-91"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;revids&quot;</span><span class="p">)]</span> <span class="o">=</span> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">id</span><span class="p">);</span>
<a name="line-92"></a><span class="p">}</span>
<a name="line-93"></a>
<a name="line-94"></a><span class="kt">void</span> <span class="n">QueryInfo</span><span class="o">::</span><span class="n">start</span><span class="p">()</span>
<a name="line-95"></a><span class="p">{</span>
<a name="line-96"></a> <span class="n">QTimer</span><span class="o">::</span><span class="n">singleShot</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">doWorkSendRequest</span><span class="p">()));</span>
<a name="line-97"></a><span class="p">}</span>
<a name="line-98"></a>
<a name="line-99"></a><span class="kt">void</span> <span class="n">QueryInfo</span><span class="o">::</span><span class="n">doWorkSendRequest</span><span class="p">()</span>
<a name="line-100"></a><span class="p">{</span>
<a name="line-101"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">QueryInfo</span><span class="p">);</span>
<a name="line-102"></a>
<a name="line-103"></a> <span class="c1">// Set the url</span>
<a name="line-104"></a> <span class="n">QUrl</span> <span class="n">url</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">MediaWiki</span><span class="p">.</span><span class="n">url</span><span class="p">();</span>
<a name="line-105"></a> <span class="n">QUrlQuery</span> <span class="n">query</span><span class="p">;</span>
<a name="line-106"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;format&quot;</span><span class="p">),</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;xml&quot;</span><span class="p">));</span>
<a name="line-107"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;action&quot;</span><span class="p">),</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;query&quot;</span><span class="p">));</span>
<a name="line-108"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;prop&quot;</span><span class="p">),</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;info&quot;</span><span class="p">));</span>
<a name="line-109"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;inprop&quot;</span><span class="p">),</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;protection|talkid|watched|subjectid|url|readable|preload&quot;</span><span class="p">));</span>
<a name="line-110"></a>
<a name="line-111"></a><span class="hll"> <span class="n">QMapIterator</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">i</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">requestParameter</span><span class="p">);</span><span class='error2'>&lt;--- Shadowed declaration</span>
</span><a name="line-112"></a>
<a name="line-113"></a> <span class="k">while</span> <span class="p">(</span><span class="n">i</span><span class="p">.</span><span class="n">hasNext</span><span class="p">())</span>
<a name="line-114"></a> <span class="p">{</span>
<a name="line-115"></a> <span class="n">i</span><span class="p">.</span><span class="n">next</span><span class="p">();</span>
<a name="line-116"></a> <span class="n">query</span><span class="p">.</span><span class="n">addQueryItem</span><span class="p">(</span><span class="n">i</span><span class="p">.</span><span class="n">key</span><span class="p">(),</span> <span class="n">i</span><span class="p">.</span><span class="n">value</span><span class="p">());</span>
<a name="line-117"></a> <span class="p">}</span>
<a name="line-118"></a> <span class="n">url</span><span class="p">.</span><span class="n">setQuery</span><span class="p">(</span><span class="n">query</span><span class="p">);</span>
<a name="line-119"></a>
<a name="line-120"></a> <span class="c1">// Set the request</span>
<a name="line-121"></a> <span class="n">QNetworkRequest</span> <span class="nf">request</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
<a name="line-122"></a> <span class="n">request</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span><span class="s">&quot;User-Agent&quot;</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">MediaWiki</span><span class="p">.</span><span class="n">userAgent</span><span class="p">().</span><span class="n">toUtf8</span><span class="p">());</span>
<a name="line-123"></a> <span class="n">QByteArray</span> <span class="n">cookie</span> <span class="o">=</span> <span class="s">&quot;&quot;</span><span class="p">;</span>
<a name="line-124"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QNetworkCookie</span><span class="o">&gt;</span> <span class="n">MediaWikiCookies</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">manager</span><span class="o">-&gt;</span><span class="n">cookieJar</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">cookiesForUrl</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">MediaWiki</span><span class="p">.</span><span class="n">url</span><span class="p">());</span>
<a name="line-125"></a>
<a name="line-126"></a><span class="hll"> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">MediaWikiCookies</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-127"></a> <span class="p">{</span>
<a name="line-128"></a> <span class="n">cookie</span> <span class="o">+=</span> <span class="n">MediaWikiCookies</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">toRawForm</span><span class="p">(</span><span class="n">QNetworkCookie</span><span class="o">::</span><span class="n">NameAndValueOnly</span><span class="p">);</span>
<a name="line-129"></a> <span class="n">cookie</span> <span class="o">+=</span> <span class="sc">&#39;;&#39;</span><span class="p">;</span>
<a name="line-130"></a> <span class="p">}</span>
<a name="line-131"></a> <span class="n">request</span><span class="p">.</span><span class="n">setRawHeader</span><span class="p">(</span> <span class="s">&quot;Cookie&quot;</span><span class="p">,</span> <span class="n">cookie</span> <span class="p">);</span>
<a name="line-132"></a>
<a name="line-133"></a> <span class="c1">// Send the request</span>
<a name="line-134"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">manager</span><span class="o">-&gt;</span><span class="n">get</span><span class="p">(</span><span class="n">request</span><span class="p">);</span>
<a name="line-135"></a> <span class="n">connectReply</span><span class="p">();</span>
<a name="line-136"></a>
<a name="line-137"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">finished</span><span class="p">()),</span>
<a name="line-138"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">doWorkProcessReply</span><span class="p">()));</span>
<a name="line-139"></a><span class="p">}</span>
<a name="line-140"></a>
<a name="line-141"></a><span class="kt">void</span> <span class="n">QueryInfo</span><span class="o">::</span><span class="n">doWorkProcessReply</span><span class="p">()</span>
<a name="line-142"></a><span class="p">{</span>
<a name="line-143"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">QueryInfo</span><span class="p">);</span>
<a name="line-144"></a>
<a name="line-145"></a> <span class="n">disconnect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">finished</span><span class="p">()),</span>
<a name="line-146"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">doWorkProcessReply</span><span class="p">()));</span>
<a name="line-147"></a>
<a name="line-148"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">error</span><span class="p">()</span> <span class="o">==</span> <span class="n">QNetworkReply</span><span class="o">::</span><span class="n">NoError</span><span class="p">)</span>
<a name="line-149"></a> <span class="p">{</span>
<a name="line-150"></a> <span class="c1">// Replace &amp; in &amp;amp;</span>
<a name="line-151"></a> <span class="n">QString</span> <span class="n">content</span> <span class="o">=</span> <span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reply</span><span class="o">-&gt;</span><span class="n">readAll</span><span class="p">());</span>
<a name="line-152"></a> <span class="n">QRegExp</span> <span class="n">regex</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;&amp;(?!</span><span class="se">\\</span><span class="s">w+;)&quot;</span><span class="p">));</span>
<a name="line-153"></a> <span class="n">content</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">regex</span><span class="p">,</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;&amp;amp;&quot;</span><span class="p">));</span>
<a name="line-154"></a> <span class="n">QXmlStreamReader</span> <span class="nf">reader</span><span class="p">(</span><span class="n">content</span><span class="p">);</span>
<a name="line-155"></a> <span class="n">QVector</span><span class="o">&lt;</span><span class="n">Protection</span><span class="o">&gt;</span> <span class="n">protect</span><span class="p">;</span>
<a name="line-156"></a>
<a name="line-157"></a> <span class="k">while</span> <span class="p">(</span><span class="o">!</span><span class="n">reader</span><span class="p">.</span><span class="n">atEnd</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">reader</span><span class="p">.</span><span class="n">hasError</span><span class="p">())</span>
<a name="line-158"></a> <span class="p">{</span>
<a name="line-159"></a> <span class="n">QXmlStreamReader</span><span class="o">::</span><span class="n">TokenType</span> <span class="n">token</span> <span class="o">=</span> <span class="n">reader</span><span class="p">.</span><span class="n">readNext</span><span class="p">();</span>
<a name="line-160"></a> <span class="n">QXmlStreamAttributes</span> <span class="n">attrs</span> <span class="o">=</span> <span class="n">reader</span><span class="p">.</span><span class="n">attributes</span><span class="p">();</span>
<a name="line-161"></a>
<a name="line-162"></a> <span class="k">if</span> <span class="p">(</span><span class="n">token</span> <span class="o">==</span> <span class="n">QXmlStreamReader</span><span class="o">::</span><span class="n">StartElement</span><span class="p">)</span>
<a name="line-163"></a> <span class="p">{</span>
<a name="line-164"></a> <span class="k">if</span> <span class="p">(</span><span class="n">reader</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;page&quot;</span><span class="p">))</span>
<a name="line-165"></a> <span class="p">{</span>
<a name="line-166"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page</span><span class="p">.</span><span class="n">setPageId</span><span class="p">(</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;pageid&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">().</span><span class="n">toUInt</span><span class="p">());</span>
<a name="line-167"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page</span><span class="p">.</span><span class="n">setTitle</span><span class="p">(</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;title&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">());</span>
<a name="line-168"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page</span><span class="p">.</span><span class="n">setNs</span><span class="p">(</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;ns&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">().</span><span class="n">toUInt</span><span class="p">());</span>
<a name="line-169"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page</span><span class="p">.</span><span class="n">setTouched</span><span class="p">(</span><span class="n">QDateTime</span><span class="o">::</span><span class="n">fromString</span><span class="p">(</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;touched&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">(),</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;yyyy&#39;-&#39;MM&#39;-&#39;dd&#39;T&#39;hh&#39;:&#39;mm&#39;:&#39;ss&#39;Z&#39;&quot;</span><span class="p">)));</span>
<a name="line-170"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page</span><span class="p">.</span><span class="n">setLastRevId</span><span class="p">(</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;lastrevid&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">().</span><span class="n">toUInt</span><span class="p">());</span>
<a name="line-171"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page</span><span class="p">.</span><span class="n">setCounter</span><span class="p">(</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;counter&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">().</span><span class="n">toUInt</span><span class="p">());</span>
<a name="line-172"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page</span><span class="p">.</span><span class="n">setLength</span><span class="p">(</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;length&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">().</span><span class="n">toUInt</span><span class="p">());</span>
<a name="line-173"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page</span><span class="p">.</span><span class="n">setStarttimestamp</span><span class="p">(</span><span class="n">QDateTime</span><span class="o">::</span><span class="n">fromString</span><span class="p">(</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;starttimestamp&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">(),</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;yyyy&#39;-&#39;MM&#39;-&#39;dd&#39;T&#39;hh&#39;:&#39;mm&#39;:&#39;ss&#39;Z&#39;&quot;</span><span class="p">)));</span>
<a name="line-174"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page</span><span class="p">.</span><span class="n">setEditToken</span><span class="p">(</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;edittoken&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">());</span>
<a name="line-175"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page</span><span class="p">.</span><span class="n">setTalkid</span><span class="p">(</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;talkid&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">().</span><span class="n">toUInt</span><span class="p">());</span>
<a name="line-176"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page</span><span class="p">.</span><span class="n">setFullurl</span><span class="p">(</span><span class="n">QUrl</span><span class="p">(</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;fullurl&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">()));</span>
<a name="line-177"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page</span><span class="p">.</span><span class="n">setEditurl</span><span class="p">(</span><span class="n">QUrl</span><span class="p">(</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;editurl&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">()));</span>
<a name="line-178"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page</span><span class="p">.</span><span class="n">setReadable</span><span class="p">(</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;readable&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">());</span>
<a name="line-179"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page</span><span class="p">.</span><span class="n">setPreload</span><span class="p">(</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;preload&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">());</span>
<a name="line-180"></a> <span class="p">}</span>
<a name="line-181"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">reader</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;protection&quot;</span><span class="p">))</span>
<a name="line-182"></a> <span class="p">{</span>
<a name="line-183"></a> <span class="n">protect</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-184"></a> <span class="p">}</span>
<a name="line-185"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">reader</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;pr&quot;</span><span class="p">))</span>
<a name="line-186"></a> <span class="p">{</span>
<a name="line-187"></a> <span class="n">QString</span> <span class="n">expiry</span><span class="p">(</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;expiry&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">());</span>
<a name="line-188"></a> <span class="n">QString</span> <span class="nf">level</span><span class="p">(</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;level&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">());</span>
<a name="line-189"></a> <span class="n">QString</span> <span class="nf">type</span><span class="p">(</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;type&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">());</span>
<a name="line-190"></a> <span class="n">QString</span> <span class="n">source</span><span class="p">;</span>
<a name="line-191"></a>
<a name="line-192"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;source&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-193"></a> <span class="p">{</span>
<a name="line-194"></a> <span class="n">source</span> <span class="o">=</span> <span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;source&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">();</span>
<a name="line-195"></a> <span class="p">}</span>
<a name="line-196"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;cascade&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-197"></a> <span class="p">{</span>
<a name="line-198"></a> <span class="n">source</span> <span class="o">=</span> <span class="n">attrs</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;cascade&quot;</span><span class="p">)).</span><span class="n">toString</span><span class="p">();</span>
<a name="line-199"></a> <span class="p">}</span>
<a name="line-200"></a>
<a name="line-201"></a> <span class="n">Protection</span> <span class="n">p</span><span class="p">;</span>
<a name="line-202"></a> <span class="n">p</span><span class="p">.</span><span class="n">setExpiry</span><span class="p">(</span><span class="n">expiry</span><span class="p">);</span>
<a name="line-203"></a> <span class="n">p</span><span class="p">.</span><span class="n">setLevel</span><span class="p">(</span><span class="n">level</span><span class="p">);</span>
<a name="line-204"></a> <span class="n">p</span><span class="p">.</span><span class="n">setType</span><span class="p">(</span><span class="n">type</span><span class="p">);</span>
<a name="line-205"></a> <span class="n">p</span><span class="p">.</span><span class="n">setSource</span><span class="p">(</span><span class="n">source</span><span class="p">);</span>
<a name="line-206"></a> <span class="n">protect</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">p</span><span class="p">);</span>
<a name="line-207"></a> <span class="p">}</span>
<a name="line-208"></a> <span class="p">}</span>
<a name="line-209"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">token</span> <span class="o">==</span> <span class="n">QXmlStreamReader</span><span class="o">::</span><span class="n">EndElement</span><span class="p">)</span>
<a name="line-210"></a> <span class="p">{</span>
<a name="line-211"></a> <span class="k">if</span> <span class="p">(</span><span class="n">reader</span><span class="p">.</span><span class="n">name</span><span class="p">()</span> <span class="o">==</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;page&quot;</span><span class="p">))</span>
<a name="line-212"></a> <span class="p">{</span>
<a name="line-213"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">protections</span> <span class="o">=</span> <span class="n">protect</span><span class="p">;</span>
<a name="line-214"></a> <span class="p">}</span>
<a name="line-215"></a> <span class="p">}</span>
<a name="line-216"></a> <span class="p">}</span>
<a name="line-217"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">reader</span><span class="p">.</span><span class="n">hasError</span><span class="p">())</span>
<a name="line-218"></a> <span class="p">{</span>
<a name="line-219"></a> <span class="n">setError</span><span class="p">(</span><span class="n">KJob</span><span class="o">::</span><span class="n">NoError</span><span class="p">);</span>
<a name="line-220"></a> <span class="n">emit</span> <span class="nf">protection</span><span class="p">(</span><span class="n">protect</span><span class="p">);</span>
<a name="line-221"></a> <span class="n">emit</span> <span class="nf">page</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">page</span><span class="p">);</span>
<a name="line-222"></a> <span class="p">}</span>
<a name="line-223"></a> <span class="k">else</span>
<a name="line-224"></a> <span class="p">{</span>
<a name="line-225"></a> <span class="n">setError</span><span class="p">(</span><span class="n">Job</span><span class="o">::</span><span class="n">XmlError</span><span class="p">);</span>
<a name="line-226"></a> <span class="p">}</span>
<a name="line-227"></a> <span class="p">}</span>
<a name="line-228"></a> <span class="k">else</span>
<a name="line-229"></a> <span class="p">{</span>
<a name="line-230"></a> <span class="n">setError</span><span class="p">(</span><span class="n">Job</span><span class="o">::</span><span class="n">NetworkError</span><span class="p">);</span>
<a name="line-231"></a> <span class="p">}</span>
<a name="line-232"></a>
<a name="line-233"></a> <span class="n">emitResult</span><span class="p">();</span>
<a name="line-234"></a><span class="p">}</span>
<a name="line-235"></a>
<a name="line-236"></a><span class="p">}</span> <span class="c1">// namespace MediaWiki</span>
</pre></div>
</td></tr></table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/index.html b/static/reports/cppcheck/master/index.html
index 5878a5e1c..c48e02b60 100644
--- a/static/reports/cppcheck/master/index.html
+++ b/static/reports/cppcheck/master/index.html
@@ -1,159 +1,153 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: </h1>
</div>
<div id="menu_index">
<p id="filename"><a href="index.html">Defect summary;</a> </p>
- <table> <tr><th>Show</th><th>#</th><th>Defect ID</th></tr> <tr><td><input type='checkbox' onclick='toggle_class_visibility(this.id)' id='shadowVar' name='shadowVar' checked></td><td>47</td><td>shadowVar</td></tr> <tr><td><input type='checkbox' onclick='toggle_class_visibility(this.id)' id='unmatchedSuppression' name='unmatchedSuppression' checked></td><td>5</td><td>unmatchedSuppression</td></tr> <tr><td><input type='checkbox' onclick='toggle_class_visibility(this.id)' id='operatorEqRetRefThis' name='operatorEqRetRefThis' checked></td><td>1</td><td>operatorEqRetRefThis</td></tr> <tr><td></td><td>53</td><td>total</td></tr> </table> <a href="stats.html">Statistics</a></p>
+ <table> <tr><th>Show</th><th>#</th><th>Defect ID</th></tr> <tr><td><input type='checkbox' onclick='toggle_class_visibility(this.id)' id='shadowVar' name='shadowVar' checked></td><td>45</td><td>shadowVar</td></tr> <tr><td><input type='checkbox' onclick='toggle_class_visibility(this.id)' id='unmatchedSuppression' name='unmatchedSuppression' checked></td><td>5</td><td>unmatchedSuppression</td></tr> <tr><td></td><td>50</td><td>total</td></tr> </table> <a href="stats.html">Statistics</a></p>
</div>
<div id="content_index">
<table>
<tr><th>Line</th><th>Id</th><th>CWE</th><th>Severity</th><th>Message</th></tr>
- <tr><td colspan='4'><a href='26.html'></a></td></tr>
- <tr class="unmatchedSuppression"><td><a href="26.html#line-0">0</a></td><td>unmatchedSuppression</td><td></td><td>information</td><td >Unmatched suppression: purgedConfiguration</td></tr>
- <tr class="unmatchedSuppression"><td><a href="26.html#line-0">0</a></td><td>unmatchedSuppression</td><td></td><td>information</td><td >Unmatched suppression: toomanyconfigs</td></tr>
- <tr class="unmatchedSuppression"><td><a href="26.html#line-0">0</a></td><td>unmatchedSuppression</td><td></td><td>information</td><td >Unmatched suppression: unusedVariable</td></tr>
- <tr class="unmatchedSuppression"><td><a href="26.html#line-0">0</a></td><td>unmatchedSuppression</td><td></td><td>information</td><td >Unmatched suppression: unusedStructMember</td></tr>
- <tr class="unmatchedSuppression"><td><a href="26.html#line-0">0</a></td><td>unmatchedSuppression</td><td></td><td>information</td><td >Unmatched suppression: ConfigurationNotChecked</td></tr>
+ <tr><td colspan='4'><a href='23.html'></a></td></tr>
+ <tr class="unmatchedSuppression"><td><a href="23.html#line-0">0</a></td><td>unmatchedSuppression</td><td></td><td>information</td><td >Unmatched suppression: purgedConfiguration</td></tr>
+ <tr class="unmatchedSuppression"><td><a href="23.html#line-0">0</a></td><td>unmatchedSuppression</td><td></td><td>information</td><td >Unmatched suppression: toomanyconfigs</td></tr>
+ <tr class="unmatchedSuppression"><td><a href="23.html#line-0">0</a></td><td>unmatchedSuppression</td><td></td><td>information</td><td >Unmatched suppression: unusedVariable</td></tr>
+ <tr class="unmatchedSuppression"><td><a href="23.html#line-0">0</a></td><td>unmatchedSuppression</td><td></td><td>information</td><td >Unmatched suppression: unusedStructMember</td></tr>
+ <tr class="unmatchedSuppression"><td><a href="23.html#line-0">0</a></td><td>unmatchedSuppression</td><td></td><td>information</td><td >Unmatched suppression: ConfigurationNotChecked</td></tr>
<tr><td colspan='4'><a href='0.html'>../../core/dplugins/generic/metadata/geolocationedit/dialog/geolocationedit.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="0.html#line-712">712</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable groupMapWidget shadows outer variable</td></tr>
<tr class="shadowVar"><td><a href="0.html#line-731">731</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable groupMapWidget shadows outer variable</td></tr>
<tr><td colspan='4'><a href='1.html'>../../core/dplugins/generic/metadata/metadataedit/iptc/iptcorigin.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="1.html#line-522">522</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable data shadows outer variable</td></tr>
<tr><td colspan='4'><a href='2.html'>../../core/dplugins/generic/metadata/metadataedit/xmp/xmpproperties.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="2.html#line-339">339</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable data shadows outer variable</td></tr>
<tr class="shadowVar"><td><a href="2.html#line-384">384</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable data shadows outer variable</td></tr>
<tr class="shadowVar"><td><a href="2.html#line-408">408</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable data shadows outer variable</td></tr>
<tr><td colspan='4'><a href='3.html'>../../core/dplugins/generic/tools/printcreator/manager/advprinttask.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="3.html#line-420">420</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable xRatio shadows outer variable</td></tr>
<tr class="shadowVar"><td><a href="3.html#line-421">421</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable yRatio shadows outer variable</td></tr>
<tr><td colspan='4'><a href='4.html'>../../core/dplugins/generic/tools/printcreator/tools/atkinspagelayouttree.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="4.html#line-259">259</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable parent shadows outer variable</td></tr>
<tr><td colspan='4'><a href='5.html'>../../core/dplugins/generic/tools/printcreator/wizard/advprintwizard.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="5.html#line-329">329</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable curr shadows outer variable</td></tr>
<tr><td colspan='4'><a href='6.html'>../../core/dplugins/generic/webservices/box/boxtalker.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="6.html#line-509">509</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable doc shadows outer variable</td></tr>
<tr><td colspan='4'><a href='7.html'>../../core/dplugins/generic/webservices/flickr/flickrwindow.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="7.html#line-585">585</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable fps shadows outer variable</td></tr>
<tr><td colspan='4'><a href='8.html'>../../core/dplugins/generic/webservices/mediawiki/backend/mediawiki_edit.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="8.html#line-310">310</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable i shadows outer variable</td></tr>
<tr><td colspan='4'><a href='9.html'>../../core/dplugins/generic/webservices/mediawiki/backend/mediawiki_queryinfo.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="9.html#line-126">126</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable i shadows outer variable</td></tr>
<tr><td colspan='4'><a href='10.html'>../../core/dplugins/generic/webservices/onedrive/odtalker.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="10.html#line-545">545</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable doc shadows outer variable</td></tr>
<tr><td colspan='4'><a href='11.html'>../../core/dplugins/generic/webservices/pinterest/ptalker.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="11.html#line-565">565</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable boardID shadows outer variable</td></tr>
<tr class="shadowVar"><td><a href="11.html#line-566">566</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable boardName shadows outer variable</td></tr>
<tr class="shadowVar"><td><a href="11.html#line-589">589</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable doc shadows outer variable</td></tr>
- <tr><td colspan='4'><a href='12.html'>../../core/dplugins/generic/webservices/piwigo/piwigotalker.cpp</a></td></tr>
- <tr class="shadowVar"><td><a href="12.html#line-651">651</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable qsl shadows outer variable</td></tr>
- <tr><td colspan='4'><a href='13.html'>../../core/dplugins/generic/webservices/twitter/twittertalker.cpp</a></td></tr>
- <tr class="shadowVar"><td><a href="13.html#line-976">976</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable doc shadows outer variable</td></tr>
- <tr><td colspan='4'><a href='14.html'>../../core/dplugins/generic/webservices/yandexfotki/yftalker.cpp</a></td></tr>
- <tr class="shadowVar"><td><a href="14.html#line-857">857</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable linkElem shadows outer variable</td></tr>
- <tr><td colspan='4'><a href='15.html'>../../core/libs/album/engine/albumpointer.h</a></td></tr>
- <tr class="operatorEqRetRefThis"><td><a href="15.html#line-139">139</a></td><td>operatorEqRetRefThis</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >'operator=' should return reference to 'this' instance.</td></tr>
- <tr><td colspan='4'><a href='16.html'>../../core/libs/dngwriter/dngwriter_convert.cpp</a></td></tr>
- <tr class="shadowVar"><td><a href="16.html#line-923">923</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable memalloc shadows outer variable</td></tr>
- <tr class="shadowVar"><td><a href="16.html#line-1010">1010</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable memalloc shadows outer variable</td></tr>
- <tr><td colspan='4'><a href='17.html'>../../core/tests/albummodel/albummodeltest.cpp</a></td></tr>
- <tr class="shadowVar"><td><a href="17.html#line-221">221</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable error shadows outer variable</td></tr>
- <tr class="shadowVar"><td><a href="17.html#line-222">222</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable error shadows outer variable</td></tr>
- <tr class="shadowVar"><td><a href="17.html#line-224">224</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable error shadows outer variable</td></tr>
- <tr class="shadowVar"><td><a href="17.html#line-226">226</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable error shadows outer variable</td></tr>
- <tr class="shadowVar"><td><a href="17.html#line-240">240</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable error shadows outer variable</td></tr>
- <tr class="shadowVar"><td><a href="17.html#line-241">241</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable error shadows outer variable</td></tr>
- <tr class="shadowVar"><td><a href="17.html#line-243">243</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable error shadows outer variable</td></tr>
- <tr class="shadowVar"><td><a href="17.html#line-244">244</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable error shadows outer variable</td></tr>
- <tr class="shadowVar"><td><a href="17.html#line-246">246</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable error shadows outer variable</td></tr>
- <tr class="shadowVar"><td><a href="17.html#line-248">248</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable error shadows outer variable</td></tr>
- <tr><td colspan='4'><a href='18.html'>../../core/tests/geolocation/editor/test_simpletreemodel.cpp</a></td></tr>
- <tr class="shadowVar"><td><a href="18.html#line-96">96</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable item21 shadows outer variable</td></tr>
- <tr class="shadowVar"><td><a href="18.html#line-98">98</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable item21Index shadows outer variable</td></tr>
- <tr class="shadowVar"><td><a href="18.html#line-108">108</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable item21 shadows outer variable</td></tr>
- <tr class="shadowVar"><td><a href="18.html#line-110">110</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable item21Index shadows outer variable</td></tr>
- <tr><td colspan='4'><a href='19.html'>../../core/tests/mediawiki/logouttest.cpp</a></td></tr>
- <tr class="shadowVar"><td><a href="19.html#line-95">95</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable request shadows outer variable</td></tr>
- <tr><td colspan='4'><a href='20.html'>../../core/utilities/geolocation/geoiface/items/gpsitemcontainer.cpp</a></td></tr>
- <tr class="shadowVar"><td><a href="20.html#line-953">953</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable success shadows outer variable</td></tr>
- <tr><td colspan='4'><a href='22.html'>../../core/utilities/geolocation/geoiface/reversegeocoding/parsetagstring.h</a></td></tr>
- <tr class="shadowVar"><td><a href="22.html#line-169">169</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable indexFormatFBracket shadows outer variable</td></tr>
- <tr class="shadowVar"><td><a href="22.html#line-216">216</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable indexFormatFBracket shadows outer variable</td></tr>
- <tr class="shadowVar"><td><a href="22.html#line-252">252</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable indexFormatFBracket shadows outer variable</td></tr>
- <tr><td colspan='4'><a href='21.html'>../../core/utilities/geolocation/geoiface/reversegeocoding/rgtagmodel.cpp</a></td></tr>
- <tr class="shadowVar"><td><a href="21.html#line-1103">1103</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable found shadows outer variable</td></tr>
- <tr><td colspan='4'><a href='23.html'>../../core/utilities/geolocation/geoiface/reversegeocoding/rgwidget.cpp</a></td></tr>
- <tr class="shadowVar"><td><a href="23.html#line-552">552</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable i shadows outer variable</td></tr>
- <tr><td colspan='4'><a href='24.html'>../../core/utilities/geolocation/mapsearches/gpsmarkertiler.cpp</a></td></tr>
- <tr class="shadowVar"><td><a href="24.html#line-315">315</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable newTile shadows outer variable</td></tr>
- <tr><td colspan='4'><a href='25.html'>../../core/utilities/setup/metadata/setupmetadata.cpp</a></td></tr>
- <tr class="shadowVar"><td><a href="25.html#line-901">901</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable msgBox shadows outer variable</td></tr>
- <tr class="shadowVar"><td><a href="25.html#line-906">906</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable result shadows outer variable</td></tr>
+ <tr><td colspan='4'><a href='12.html'>../../core/dplugins/generic/webservices/yandexfotki/yftalker.cpp</a></td></tr>
+ <tr class="shadowVar"><td><a href="12.html#line-857">857</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable linkElem shadows outer variable</td></tr>
+ <tr><td colspan='4'><a href='13.html'>../../core/libs/dngwriter/dngwriter_convert.cpp</a></td></tr>
+ <tr class="shadowVar"><td><a href="13.html#line-923">923</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable memalloc shadows outer variable</td></tr>
+ <tr class="shadowVar"><td><a href="13.html#line-1010">1010</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable memalloc shadows outer variable</td></tr>
+ <tr><td colspan='4'><a href='14.html'>../../core/tests/albummodel/albummodeltest.cpp</a></td></tr>
+ <tr class="shadowVar"><td><a href="14.html#line-221">221</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable error shadows outer variable</td></tr>
+ <tr class="shadowVar"><td><a href="14.html#line-222">222</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable error shadows outer variable</td></tr>
+ <tr class="shadowVar"><td><a href="14.html#line-224">224</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable error shadows outer variable</td></tr>
+ <tr class="shadowVar"><td><a href="14.html#line-226">226</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable error shadows outer variable</td></tr>
+ <tr class="shadowVar"><td><a href="14.html#line-240">240</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable error shadows outer variable</td></tr>
+ <tr class="shadowVar"><td><a href="14.html#line-241">241</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable error shadows outer variable</td></tr>
+ <tr class="shadowVar"><td><a href="14.html#line-243">243</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable error shadows outer variable</td></tr>
+ <tr class="shadowVar"><td><a href="14.html#line-244">244</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable error shadows outer variable</td></tr>
+ <tr class="shadowVar"><td><a href="14.html#line-246">246</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable error shadows outer variable</td></tr>
+ <tr class="shadowVar"><td><a href="14.html#line-248">248</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable error shadows outer variable</td></tr>
+ <tr><td colspan='4'><a href='15.html'>../../core/tests/geolocation/editor/test_simpletreemodel.cpp</a></td></tr>
+ <tr class="shadowVar"><td><a href="15.html#line-96">96</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable item21 shadows outer variable</td></tr>
+ <tr class="shadowVar"><td><a href="15.html#line-98">98</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable item21Index shadows outer variable</td></tr>
+ <tr class="shadowVar"><td><a href="15.html#line-108">108</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable item21 shadows outer variable</td></tr>
+ <tr class="shadowVar"><td><a href="15.html#line-110">110</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable item21Index shadows outer variable</td></tr>
+ <tr><td colspan='4'><a href='16.html'>../../core/tests/mediawiki/logouttest.cpp</a></td></tr>
+ <tr class="shadowVar"><td><a href="16.html#line-95">95</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable request shadows outer variable</td></tr>
+ <tr><td colspan='4'><a href='17.html'>../../core/utilities/geolocation/geoiface/items/gpsitemcontainer.cpp</a></td></tr>
+ <tr class="shadowVar"><td><a href="17.html#line-953">953</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable success shadows outer variable</td></tr>
+ <tr><td colspan='4'><a href='18.html'>../../core/utilities/geolocation/geoiface/reversegeocoding/parsetagstring.h</a></td></tr>
+ <tr class="shadowVar"><td><a href="18.html#line-169">169</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable indexFormatFBracket shadows outer variable</td></tr>
+ <tr class="shadowVar"><td><a href="18.html#line-216">216</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable indexFormatFBracket shadows outer variable</td></tr>
+ <tr class="shadowVar"><td><a href="18.html#line-252">252</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable indexFormatFBracket shadows outer variable</td></tr>
+ <tr><td colspan='4'><a href='20.html'>../../core/utilities/geolocation/geoiface/reversegeocoding/rgtagmodel.cpp</a></td></tr>
+ <tr class="shadowVar"><td><a href="20.html#line-1103">1103</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable found shadows outer variable</td></tr>
+ <tr><td colspan='4'><a href='19.html'>../../core/utilities/geolocation/geoiface/reversegeocoding/rgwidget.cpp</a></td></tr>
+ <tr class="shadowVar"><td><a href="19.html#line-552">552</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable i shadows outer variable</td></tr>
+ <tr><td colspan='4'><a href='21.html'>../../core/utilities/geolocation/mapsearches/gpsmarkertiler.cpp</a></td></tr>
+ <tr class="shadowVar"><td><a href="21.html#line-315">315</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable newTile shadows outer variable</td></tr>
+ <tr><td colspan='4'><a href='22.html'>../../core/utilities/setup/metadata/setupmetadata.cpp</a></td></tr>
+ <tr class="shadowVar"><td><a href="22.html#line-901">901</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable msgBox shadows outer variable</td></tr>
+ <tr class="shadowVar"><td><a href="22.html#line-906">906</a></td><td>shadowVar</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>style</td><td >Local variable result shadows outer variable</td></tr>
</table>
</div>
<div id="footer">
<p>
Cppcheck 1.86 - a tool for static C/C++ code analysis</br>
</br>
Internet: <a href="http://cppcheck.net">http://cppcheck.net</a></br>
IRC: <a href="irc://irc.freenode.net/cppcheck">irc://irc.freenode.net/cppcheck</a></br>
<p>
</div>
</body>
</html>
diff --git a/static/reports/cppcheck/master/stats.html b/static/reports/cppcheck/master/stats.html
index 7da450907..8adf46da2 100644
--- a/static/reports/cppcheck/master/stats.html
+++ b/static/reports/cppcheck/master/stats.html
@@ -1,65 +1,65 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-253377b195</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-e2b34462e8</title>
<link rel="stylesheet" href="style.css">
<style>
</style>
<script language="javascript">
function getStyle(el,styleProp) {
if (el.currentStyle)
var y = el.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
return y;
}
function toggle() {
var el = this.expandable_content;
var mark = this.expandable_marker;
if (el.style.display == "block") {
el.style.display = "none";
mark.innerHTML = "[+]";
} else {
el.style.display = "block";
mark.innerHTML = "[-]";
}
}
function init_expandables() {
var elts = document.getElementsByClassName("expandable");
for (var i = 0; i < elts.length; i++) {
var el = elts[i];
var clickable = el.getElementsByTagName("span")[0];
var marker = clickable.getElementsByClassName("marker")[0];
var content = el.getElementsByClassName("content")[0];
var width = clickable.clientWidth - parseInt(getStyle(content, "padding-left")) - parseInt(getStyle(content, "padding-right"));
content.style.width = width + "px";
clickable.expandable_content = content;
clickable.expandable_marker = marker;
clickable.onclick = toggle;
}
}
function set_class_display(c, st) {
var elements = document.querySelectorAll('.' + c),
len = elements.length;
for (i = 0; i < len; i++) {
elements[i].style.display = st;
}
}
function toggle_class_visibility(id) {
var box = document.getElementById(id);
set_class_display(id, box.checked ? '' : 'none');
}
</script>
</head>
<body onload="init_expandables()">
<div id="header">
- <h1>Cppcheck report - digiKam-master-rev-253377b195: Statistics </h1>
+ <h1>Cppcheck report - digiKam-master-rev-e2b34462e8: Statistics </h1>
</div>
<div id="menu_index">
<p id="filename"><a href="index.html">Back to summary</a> </p>
</div>
<div id="content_index">